当modelstate.isvalid为false时,如何确定modelstate中哪些键包含错误?通常我只需将鼠标悬停在modelstate.values列表中,逐项检查错误计数是否大于0。但现在我正在处理一个视图,其中包含一些复杂对象的列表,总共有252个modelstate项(每个列表中每个对象的每个项都有一个modelstate.keys项)。
那么,有没有一种更简单的方法来指出错误源呢?

最佳答案

你可以检查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
    }
}

关于c# - 如何找出ModelState的哪个键有错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15296069/

10-14 22:49