如何從ASP.Net MVC modelState獲取全部錯誤?

我想在不知道鍵值的狀況下從modelState中獲取全部錯誤消息。 循環以獲取ModelState包含的全部錯誤消息。 spa

我怎樣才能作到這一點? 調試


#1樓

這也有效: code

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可能指示錯誤。 get


#3樓

foreach (ModelState modelState in ViewData.ModelState.Values) {
    foreach (ModelError error in modelState.Errors) {
        DoSomethingWith(error);
    }
}

另請參見如何在ASP.NET MVC中獲取模型狀態錯誤的集合?string


#4樓

我能用一點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


#5樓

在調試過程當中,我發如今每一個頁面的底部放置一個表來顯示全部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>
相關文章
相關標籤/搜索