[英]How to validate multiple, separate models in a single ViewModel using ASP.NET MVC?
所以我有兩個單獨的模型: ModelA
和ModelB
。 我也有一個ViewModel: TheViewModel
。 TheViewModel
包含的實例ModelA
以及ModelB
。
ModelA
和ModelB
具有各自的屬性和[ Required
]。 但是,當我去發布表單時, TheViewModel
只驗證ModelA
而忽略ModelB
如何使用一個ViewModel驗證多個模型?
一些代碼片段:
型號A
public class ModelA
{
[Required]
public string TheID { get; set; }
public string TheName { get; set; }
}
型號B
public class ModelB
{
[Required]
public string TheCode { get; set; }
public string TheType { get; set; }
}
視圖模型
public class TheViewModel
{
public ModelA ModelAExample { get; set; }
public ModelB ModelBExample { get; set; }
}
控制者
[HttpPost]
[ValidateAntiForgeryToken]
public IActionResult Create(TheViewModel vm)
{
if (ModelState.IsValid)
{
return RedirectToAction("Index", "Home");
}
return View(vm.ModelAExample, vm.ModelBExample));
}
該ModelState中只會驗證,如果TheID
財產ModelA
是有效的,而不是TheCode
在ModelB
您只需要傳遞vm即可查看。 模型綁定僅在一個模型上發生。如果要在這種情況下傳遞多個模型,則必須使用諸如ViewBag等的Dynamic對象。
return View(vm);
然后,您可以將View模型與View綁定在一起。您給出的代碼將不會運行返回View(vm.ModelAExample,vm.ModelBExample ));
在這里它將引發語法錯誤
這不會編譯:
return View(vm.ModelAExample, vm.ModelBExample));
如果將vm用作ViewModel,則驗證將是正確的:
return View(vm)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.