我使用的是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
是否包含RequiredError
或StringLenght
错误?
答案 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
中找到包含错误的属性并循环遍历每个属性属性。