【发布时间】:2016-07-05 18:21:42
【问题描述】:
所以我有两个独立的模型:ModelA 和 ModelB。我还有一个 ViewModel:TheViewModel。 TheViewModel 包含 ModelA 和 ModelB 的实例。
ModelA 和 ModelB 有各自的属性和 [Required]。但是,当我发布表单时,TheViewModel 仅验证 ModelA 而忽略 ModelB
如何使用一个 ViewModel 验证多个模型?
一些代码sn-ps:
模型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 只会验证ModelA 中的TheID 属性是否有效,而不是ModelB 中的TheCode 是否有效
【问题讨论】:
-
您还应该在
TheViewModel类的两个属性中包含[Required]。当你说ModelState.IsValid在不应该返回 true 时,TheCode的值是多少?最后,您应该将变量vm传递给View方法,因为 View 需要 1 个模型而不是多个模型。
标签: c# asp.net asp.net-mvc validation asp.net-mvc-4