如何确定ModelState的哪个键有错误

leo*_*nes 10 c# asp.net-mvc modelstate

当ModelState.IsValid为false时,如何确定ModelState中哪些键包含错误?通常我只是将鼠标悬停在ModelState.Values列表中,逐项检查错误计数> 0.但是现在我正在处理一个包含复杂对象列表的视图,共计252个ModelState项(每个对象的每个项目)每个列表都有一个ModelState.Keys上的条目.

那么,有没有更容易指出错误来源的方法?

Shy*_*yju 22

您可以检查ViewData.ModelState.Values集合并查看错误.

[Httpost]
public ActionResult Create(User model)
{
   if(ModelState.IsValid)
   {
     //Save and redirect
   }
   else
   {
     foreach (var modelStateVal in ViewData.ModelState.Values)
     {
       foreach (var error in modelStateVal.Errors)
       {               
          var errorMessage = error.ErrorMessage;
          var exception = error.Exception;
          // You may log the errors if you want
       }
     }
   }         
   return View(model);
 }
}
Run Code Online (Sandbox Code Playgroud)

如果你真的想要Keys(属性名称),你可以遍历 ModelState.Keys

foreach (var modelStateKey in ViewData.ModelState.Keys)
{
    var modelStateVal = ViewData.ModelState[modelStateKey];
    foreach (var error in modelStateVal.Errors)
    {
        var key = modelStateKey; 
        var errorMessage = error.ErrorMessage;
        var exception = error.Exception;
        // You may log the errors if you want
    }
}
Run Code Online (Sandbox Code Playgroud)