PDA

View Full Version : سوال: ارسال یک Model از داحل ViewModel



morika
شنبه 19 مهر 1393, 19:16 عصر
سلام
من یه صفحه دارم که یک ViewModel حاوی چندین Model مختلف رو بهش ارسال می کنم. یکی از این مدل ها Mailbox هستش که ازش برای ارسال ایمیل استفاده میشه. حالا چجوری میشه تو قسمتی از صفحه، فرم ایجکسی که وضیظه ارسال این مدل رو داره فقط همین مدول Mailbox رو به اکشن مربوطه ارسال کنه نه اینکه همه ViewModel رو به اکشن ارسال کنه؟
ممنون

morika
پنج شنبه 24 مهر 1393, 16:48 عصر
کسی نظری نداره؟

بهزاد علی محمدزاده
پنج شنبه 24 مهر 1393, 18:59 عصر
یه پاسخ ارسال کرده بودم که ترجیح دادم ویرایشش کنم . شما همون ViewMOdel رو به عنوان پارامتر در Action مورد نظر قرار بدی و در فرم ajax خودت داده رو که ارسال کنی, بقیه مدل ها بصورت null برگشت داده میشه و معناش اینه که همون مدل مد نظرت Bind شده.



@model MVC.Models.MultipleViewModel
@using (Ajax.BeginForm("MailWithViewModel", "Home", new AjaxOptions()
{
HttpMethod = "POST"
}))
{
@Html.TextBoxFor(model => model.ModelOne.Name)
<input type="submit" name="name" value="Pass" />
}

[HttpPost]
public ActionResult MailWithViewModel(MultipleViewModel model)
{
var name = model.ModelOne.Name;


return View();
}

morika
جمعه 25 مهر 1393, 14:46 عصر
خب مشکل این فسمت نیست. مشکل اینجاست که اگه یه مدلی تو این viewModel یه فیلد required داشته باشه تا نیازش برطرف نشه ModelState.IsValid مقدار false رو برمی گردونه. مثلا اگه مدل login هم تو همین viewModel باشه و فیلد پسورد required باشه تا زمانی که پسورد وارد نشه ModelState هیچ وقت Valid نمیشه و نمیشه کاریش کرد. درسته؟

بهزاد علی محمدزاده
جمعه 25 مهر 1393, 15:50 عصر
از TryValidateModel استفاده کن , و مدل مد نظرت و برای اعتبار سنجی بهش بده و اینجوری اون مشکل حل میشه :



if (TryValidateModel(model))
{
var name = model.ModelOne.Name;
}