当ModelState.IsValid为false时,如何确定ModelState中哪些键包含错误?通常我只是将鼠标悬停在ModelState.Values列表中,逐项检查错误计数>但是现在我正在研究一个包含复杂对象列表的视图,共有252个ModelState项(每个列表的每个对象的每个项在ModelState.Keys上都有一个条目)。
那么,是否有更容易指出错误来源的方法?
答案 0 :(得分: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);
}
}
如果你真的想要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
}
}
答案 1 :(得分:2)
ModelState.Values.SelectMany(v => v.Errors);
被认为更清洁。