我正在尝试使用简单的自定义验证属性,但无法看到我缺少的内容。
[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
调用。我究竟做错了什么?
答案 0 :(得分:6)
使用
Validator.TryValidateObject(test, contx, results, true);
如果最后一个参数未设置为true
,则Validator
仅检查属性RequiredAttribute
(并且仅使用该属性进行验证,忽略其他属性)。