【问题标题】:How does system.web.mvc determine if ModelState's values contain errors?system.web.mvc 如何确定 ModelState 的值是否包含错误?
【发布时间】:2014-03-21 17:58:42
【问题描述】:

那么,我可以在控制器中调用ModelState.IsValid 吗?

检查什么?它是根据什么检查的? 它发生在哪里?

我查看了 MSDN 文档,但没有透露太多信息。

【问题讨论】:

  • 使用反编译器并检查代码。试试 JetBrains dotPeek 并打开 System.Web.MVC dll 看看这个方法有什么代码

标签: asp.net-mvc asp.net-mvc-4 modelstate


【解决方案1】:

检查什么?

ModelState 字典。

它是根据什么检查的?

此字典是否包含有错误的元素。

发生在哪里?

每当您调用 IsValid 方法时。但也许你在问这本字典什么时候填充。它由默认模型绑定器填充。例如,假设您有以下控制器操作:

[HttpPost]
public ActionResult Index(MyViewModel model)
{
    if (ModelState.IsValid) ...
}

当默认模型绑定器绑定到视图模型时(在控制器操作执行之前),它会在解析请求值时应用必要的验证,如果有错误,它会将它们添加到 ModelState 字典中。因此,一旦代码到达控制器操作并检查 IsValid 属性,此字典已被填充。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-04-22
    • 1970-01-01
    • 1970-01-01
    • 2014-02-14
    • 1970-01-01
    • 2012-09-30
    • 2010-11-10
    相关资源
    最近更新 更多