我想在不知道键值的情况下从modelState中获取所有错误消息。 循环以获取ModelState包含的所有错误消息。
我怎样才能做到这一点?
#1楼
这也有效:
var query = from state in ModelState.Values
from error in state.Errors
select error.ErrorMessage;
var errors = query.ToArray(); // ToList() and so on...
#2楼
此外, ModelState.Values.ErrorMessage
可能为空,但ModelState.Values.Exception.Message
可能指示错误。
#3楼
foreach (ModelState modelState in ViewData.ModelState.Values) {
foreach (ModelError error in modelState.Errors) {
DoSomethingWith(error);
}
}
另请参见如何在ASP.NET MVC中获取模型状态错误的集合? 。
#4楼
我能用一点LINQ做到这一点,
public static List<string> GetErrorListFromModelState
(ModelStateDictionary modelState)
{
var query = from state in modelState.Values
from error in state.Errors
select error.ErrorMessage;
var errorList = query.ToList();
return errorList;
}
上述方法返回验证错误列表。
进一步阅读:
如何从ASP.NET MVC中的ModelState读取所有错误
#5楼
在调试过程中,我发现在每个页面的底部放置一个表来显示所有ModelState错误很有用。
<table class="model-state">
@foreach (var item in ViewContext.ViewData.ModelState)
{
if (item.Value.Errors.Any())
{
<tr>
<td><b>@item.Key</b></td>
<td>@((item.Value == null || item.Value.Value == null) ? "<null>" : item.Value.Value.RawValue)</td>
<td>@(string.Join("; ", item.Value.Errors.Select(x => x.ErrorMessage)))</td>
</tr>
}
}
</table>
<style>
table.model-state
{
border-color: #600;
border-width: 0 0 1px 1px;
border-style: solid;
border-collapse: collapse;
font-size: .8em;
font-family: arial;
}
table.model-state td
{
border-color: #600;
border-width: 1px 1px 0 0;
border-style: solid;
margin: 0;
padding: .25em .75em;
background-color: #FFC;
}
</style>
来源:oschina
链接:https://my.oschina.net/u/3797416/blog/3162624