[英]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.