ModelState.IsValid 是假的 - 但哪一个 - 简单的方法

SBi*_*are 5 asp.net-mvc c#-4.0 visual-studio-2012

在 ASP.NET MVC 中,当我们使用一些数据调用 post 操作时,我们会检查 ModelState,如果出现一些验证错误,它将是错误的。对于一个大的输入用户信息表单,展开每个值并查看计数以查看哪个键(附加示例图像中的 9 个)具有验证错误是很烦人的。想知道是否有人知道一种简单的方法来找出导致验证错误的元素。

在此处输入图片说明

Ari*_*iac 7

在 VS2015+ 中,您可以在即时窗口中使用 LINQ,这意味着您只需运行以下命令:

ModelState.SelectMany(
    x => x.Value.Errors, 
    (state, error) => $"{state.Key}:  {error.ErrorMessage}"
)
Run Code Online (Sandbox Code Playgroud)


cry*_*yss 4

我建议写一个方法:

namespace System.Web
{
    using Mvc;

    public static class ModelStateExtensions
    {
        public static Tuple<string, string> GetFirstError(this ModelStateDictionary modelState)
        {
            if (modelState.IsValid)
            {
                return null;
            }

            foreach (var key in modelState.Keys)
            {
                if (modelState[key].Errors.Count != 0)
                {
                    return new Tuple<string, string>(key, modelState[key].Errors[0].ErrorMessage);
                }
            }

            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在调试过程中打开立即窗口并输入:

ModelState.GetFirstError()
Run Code Online (Sandbox Code Playgroud)