我遇到了一个奇怪的场景,我希望这是一个椅子和键盘的错误。
我似乎无法获得验证上下文来检查任何其他验证属性。
这是我的poco:
public class TestMe
{
[System.ComponentModel.DataAnnotations.Range(1,40)]
public int Count { get; set; }
}
我在跑
var t = new TestMe();
t.Count = 0;
var context = new ValidationContext(t, null, null);
var validationResults = new List<ValidationResult>();
var result = Validator.TryValidateObject(t, context, validationResults);
这似乎返回true而没有错误。
它似乎只检查RequiredAttribute
。我尝试创建一个新属性来检查IsValid是否被调用,令我失望的是,没有执行任何IsValid函数。我覆盖了RequiredAttribute
并且那个似乎被调用了。
有谁知道我做错了什么?
答案 0 :(得分:3)
试试这个
var result = Validator.TryValidateObject(t, context, validationResults, true);
您必须使用validateAllProperties
中的TryValidateObject
参数。将其设置为true
。那么它的范围验证器应该按预期工作。