如何从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>
相关文章
相关标签/搜索