自定义验证属性总是返回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调用。我做错了什么?

自定义验证属性总是返回IsValid==true

使用

Validator.TryValidateObject(test, contx, results, true);

如果最后一个参数没有设置为true, Validator只检查RequiredAttribute的属性(并且只验证使用该属性,忽略其他属性)。