asp.net-mvc - 使用ModelState.Remove处理ModelState是否正确?

标签 asp.net-mvc asp.net-mvc-3 modelstate

我正在处理大型MVC3 Web应用程序,并且对ModelState.IsValid方法感到烦恼。

我几乎所有的 Controller 都使用ModelState来验证发布的数据。
View 全部基于包含不同类的ViewModels,这些类显然包含可以标记为[Required]的属性。

我遇到的问题是有时不需要必需的属性,而我必须使用ModelState.Remove方法,以便ModelState.IsValid变为true。

我的问题是使用ModelState.Remove,这是做事的正确方法还是有更有效的方法?

最佳答案

如果您在两个不同的上下文中使用具有[Required]属性的同一 View 模型,其中一个是必需属性,另一个是不需要属性,那么您将需要在操作时手动更改ModelState

一种替代方法是使用其他 View 模型。也许有一个具有所有属性的基类,除了所要求的属性外。然后从中导出两个 View 模型,一个具有所需属性的 View 模型,一个具有非必需属性的 View 模型(我知道这是重复的)。您可以决定将它们完全分开,而不使用继承。

关于asp.net-mvc - 使用ModelState.Remove处理ModelState是否正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6843171/

相关文章:

asp.net - 奇怪的 ValidateInputIfRequiredByConfig 错误

c# - 仅针对特定请求的 MVC 跟踪

c# - MVC 4. ModelState.IsValid 总是返回 true

c# - PostAsJsonAsync 似乎没有发布正文参数

c# - 模型的验证消息不会显示为 View 模型中的属性

Asp.Net MVC3 到 MVC4 升级工具?

.net - ModelState.IsValid 在使用数据注释时始终为真,MVC 作为 Web API

asp.net-mvc - 如果 ModelState 中不存在某个键,如何添加它? aspnetmvc1

asp.net-mvc - MVC 4 - Ajax - 用另一个替换部分 View

asp.net-mvc - 根据请求域捆绑 CSS 文件?