繁体   English   中英

如何使用模型验证确定Asp.Net身份验证错误的类型

[英]How to determine the type of Validation Error on Asp.Net Identity using Model Validation

我正在使用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错误而不读取文本错误?

您可以直接从属性中读取它:

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有。 因此,您必须在MyModelMyModel有错误的属性, MyModel遍历每个属性属性。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM