我有一个简单的表单,它将ViewModel发布到Action方法。保存信息之前,将使用标准的if(ModelState.IsValid)
检查ModelState。然后创建并保存一个新对象。太好了,它有效。
最近,另一个开发人员加入了,并使用我原来的ViewModel创建了一个新视图。他还向ViewModel添加了一个新的[Required]属性,以使其逻辑起作用。
通过这样做,他的逻辑破坏了我最初的逻辑。因为我的初始视图未使用其新的Required属性,所以ModelState.IsValid
检查现在失败,并且我的代码无法运行。
在这里采取的最佳方法是什么?尽管我不想这么做,但是我应该摆脱对Post操作的ModelState.IsValid检查,还是可以将其新属性标记为在原始视图中使用或在action方法中发布时不需要?
先感谢您。
最佳答案
您可以在下面的操作方法中使用属性[Bind(Exclude="")]
。然后,当您提交表单时,模型绑定程序将忽略该属性,即使它是必需的。
[HttpPost]
public ActionResult Index([Bind(Exclude = "AdditionalProperty")]YourModel model)
{
//
}
关于c# - 在不同 View 中共享ViewModel时,ModelState失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21687981/