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

当ModelState.IsValid为false时,如何确定ModelState中哪些键包含错误? 通常我只是将鼠标hover在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); } } 

如果您确实需要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 } } 
 ModelState.Values.SelectMany(v => v.Errors); 

被认为更清洁。