当 ModelState.IsValid 为 false 时,如何确定 ModelState 中的哪些键包含错误?通常我只会将鼠标悬停在 ModelState.Values 列表中,逐项检查错误计数 > 0。但现在我正在处理一个包含一些复杂对象列表的视图,总共 252 个 ModelState 项(每个对象的每个项每个列表在 ModelState.Keys 上都有一个条目)。
那么,有没有更简单的方法来指出错误来源呢?
当 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
}
}
ModelState.Values.SelectMany(v => v.Errors);
被认为更清洁。