我有一个简单的表单,它将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/

10-12 21:11