我想在不知道鍵值的狀況下從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>