自定义验证属性始终返回IsValid == true

时间:2014-03-27 00:30:34

标签: c# .net

我正在尝试使用简单的自定义验证属性,但无法看到我缺少的内容。

[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调用。我究竟做错了什么?

1 个答案:

答案 0 :(得分:6)

使用

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

如果最后一个参数未设置为true,则Validator仅检查属性RequiredAttribute(并且仅使用该属性进行验证,忽略其他属性)。