在ASP.NET MVC中,当我们使用某些数据调用post操作时,我们检查ModelState,如果出现一些验证错误,它将是最糟糕的。对于较大的“输入用户信息”表单,展开每个值并查看计数以查看哪个密钥(附加示例图像中的9)具有验证错误是令人讨厌的。想知道是否有人知道一个简单的方法来找出导致验证错误的元素。
答案 0 :(得分: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;
}
}
}
然后在调试期间打开立即窗口并输入:
ModelState.GetFirstError()
答案 1 :(得分:3)
在VS2015 +中,您可以在立即窗口中使用LINQ,这意味着您只需运行以下命令:
ModelState.SelectMany(
x => x.Value.Errors,
(state, error) => $"{state.Key}: {error.ErrorMessage}"
)
答案 2 :(得分:2)
听起来您正在寻找调试器增强功能。我最近在visual studio gallery中看到了这个产品。
http://visualstudiogallery.msdn.microsoft.com/16acdc63-c4f1-43a7-866a-67ff7022a0ac
我与他们没有任何关系,并且没有使用它。它也是一个试用版,并且不知道完整的东西需要花多少钱。
答案 3 :(得分:2)
如果您更专注于调试器方面,请使用OzCode的试用版。它通过用它自己的,更强大的调试工具提示替换常用的调试工具提示来增强Visual Studio IDE。很难用语言表达,查看他们的网站,他们在那里有一系列功能。
我已经玩了几个星期的测试版,它被证明是一个非常有价值的工具。您可以使用OzCode查询调试器中的数据。例如,您可以通过对ModelState
集合进行过滤来查询Values
中的项目。