如何找出哪些关键的ModelState中有错误(How to figure out which ke

2019-07-21 05:40发布

如何找出这ModelState中包含一个错误,当ModelState.IsValid是假的钥匙? 通常我只会把鼠标直通的ModelState.Values列表检查逐项进行错误计数> 0。但现在我的工作在具有复杂对象的某些列表视图,共计252项的ModelState(每个对象的每个项目每个列表的对ModelState.Keys的条目)。

那么,有没有指出错误源更简单的方法?

Answer 1:

您可以检查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);
 }
}

如果你真的想要的键(属性名称),你可以通过迭代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
    }
}


Answer 2:

ModelState.Values.SelectMany(v => v.Errors);

被认为是清洁的。



文章来源: How to figure out which key of ModelState has error