我想在不知道键值的状况下从modelState中获取全部错误消息。 循环以获取ModelState包含的全部错误消息。 spa
我怎样才能作到这一点? 调试
这也有效: code
var query = from state in ModelState.Values from error in state.Errors select error.ErrorMessage; var errors = query.ToArray(); // ToList() and so on...
此外, ModelState.Values.ErrorMessage
可能为空,但ModelState.Values.Exception.Message
可能指示错误。 get
foreach (ModelState modelState in ViewData.ModelState.Values) { foreach (ModelError error in modelState.Errors) { DoSomethingWith(error); } }
另请参见如何在ASP.NET MVC中获取模型状态错误的集合? 。 string
我能用一点LINQ作到这一点, it
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; }
上述方法返回验证错误列表。 io
进一步阅读: table
如何从ASP.NET MVC中的ModelState读取全部错误 class
在调试过程当中,我发如今每一个页面的底部放置一个表来显示全部ModelState错误颇有用。 foreach
<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>