1

我正在编写一个源自ReactiveValidatedObject. 这允许我使用数据注释来触发视图上的验证,但我遇到了一个问题:验证规则是以随机顺序进行评估的。

例如,如果属性是这样声明的(模型的字段是小数,并且方法验证器只是执行decimal.TryParse并检查值是否 >= 0):

  private string abc;
  [ValidatesViaMethod(ErrorMessage = "Invalid", AllowNull = true]
  [Required(ErrorMessage = "Required")]
  public string Abc { /* ... */ }

我有确保行为如下的单元测试:

  • 如果该字段为空白,则错误应为“必填”。
  • 如果该字段包含无法解析的内容,则错误应为“无效”。

有时,我会更改另一个文件中的某些内容,运行所有测试,但这个会失败。在属性声明中交换属性的顺序可以修复测试。

有没有办法指定这些属性的应用顺序?

4

1 回答 1

1

我不相信有任何方法可以指定顺序,这是反射返回它们的顺序。您可能必须装配您的 IsAbcValid 以检测 null 并(错误地)将其标记为有效。

于 2011-11-18T07:30:40.657 回答