如何使用模型验证确定Asp.Net标识上的验证错误类型

时间:2014-11-26 17:00:31

标签: c# asp.net validation asp.net-web-api2

我使用的是Asp.Net Identity 2.0,Web Api 2和.Net Framework 4.5。

我已经为Web Api实现了一个验证过滤器,它捕获了所有模型验证错误。

Asp.net Identity为每个模型验证错误提供了文本错误,但它没有提供了解验证错误类型的方法。例如,我不需要文本错误“电话参数是必需的”但我确实需要知道错误是“必需”验证错误或我放在属性上的任何属性。

示例:

Class MyModel
{

  [Required]
  [StringLength(10, ErrorMessage = "The {0} must be at least {2} characters long.", MinimumLength = 6)]
  public string Phone {get; set;};

}

如何在不阅读文字错误的情况下知道ModelState是否包含RequiredErrorStringLenght错误?

1 个答案:

答案 0 :(得分:0)

您可以直接从酒店阅读:

using System.Reflection;
var modelStateProperties = typeof(MyModel).GetProperties().Where(p => ModelState.Keys.Any(k => k == p.Name));
foreach (var property in modelStateProperties)
{
    // Found properties with errors in them
    var attrs = properties.GetCustomAttributes();
    // attrs now has the list of attributes, i.e., Required, StringLength, etc.
}

ModelState没有你需要的东西,Model。因此,您必须在MyModel中找到包含错误的属性并循环遍历每个属性属性。