自定义验证属性总是返回IsValid==true
本文关键字:IsValid true 返回 验证 属性 自定义 | 更新日期: 2023-09-27 17:54:00
我试图获得一个简单的自定义验证属性工作,但看不到我错过了什么。
[AttributeUsage(AttributeTargets.Property)]
public class CustomValAttribute :ValidationAttribute
{
public override bool IsValid(object value)
{
return false;
}
}
public class TestModel
{
[CustomVal]
public string Name { get; set; }
}
然后我试着验证:
var test = new TestModel (){ Name = "test" };
ValidationContext contx = new ValidationContext(test, null, null);
var results = new List<ValidationResult>();
Console.WriteLine(Validator.TryValidateObject(test, contx, results));
但是结果总是正确的,然后我发现我的自定义验证器的IsValid
方法从未被Validator
调用。我做错了什么?
使用
Validator.TryValidateObject(test, contx, results, true);
如果最后一个参数没有设置为true
, Validator
只检查RequiredAttribute
的属性(并且只验证使用该属性,忽略其他属性)。