验证上下文不检查验证属性

时间:2014-12-15 04:04:38

标签: c# validation data-annotations

我遇到了一个奇怪的场景,我希望这是一个椅子和键盘的错误。

我似乎无法获得验证上下文来检查任何其他验证属性。

这是我的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并且那个似乎被调用了。

有谁知道我做错了什么?

1 个答案:

答案 0 :(得分:3)

试试这个

var result = Validator.TryValidateObject(t, context, validationResults, true);

您必须使用validateAllProperties中的TryValidateObject参数。将其设置为true。那么它的范围验证器应该按预期工作。

希望这有帮助!