如何获得所有 ModelState 错误消息的列表?我发现这段代码可以获取所有 key : ( Returning a list of keys with ModelState errors )
var errorKeys = (from item in ModelState
where item.Value.Errors.Any()
select item.Key).ToList();
但是我如何将错误消息作为 IList 或 IQueryable 获取?
我可以去:
foreach (var key in errorKeys)
{
string msg = ModelState[error].Errors[0].ErrorMessage;
errorList.Add(msg);
}
但那是手动完成的 - 肯定有一种使用 LINQ 来完成的方法吗? .ErrorMessage 属性位于链的下游,我不知道如何编写 LINQ...
最佳答案
你可以把任何东西放在select
里面子句:
var errorList = (from item in ModelState
where item.Value.Errors.Any()
select item.Value.Errors[0].ErrorMessage).ToList();
编辑:您可以通过添加 from
将多个错误提取到单独的列表项中子句,像这样:
var errorList = (from item in ModelState.Values
from error in item.Errors
select error.ErrorMessage).ToList();
或者:
var errorList = ModelState.Values.SelectMany(m => m.Errors)
.Select(e => e.ErrorMessage)
.ToList();
第 2 编辑:
您正在寻找 Dictionary<string, string[]>
:
var errorList = ModelState.ToDictionary(
kvp => kvp.Key,
kvp => kvp.Value.Errors.Select(e => e.ErrorMessage).ToArray()
);
关于c# - ASP.NET MVC 如何将 ModelState 错误转换为 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2845852/