1

から派生したビューモデルを書いていますReactiveValidatedObject。これにより、データアノテーションを使用してビューの検証をトリガーできますが、問題が発生しました。検証ルールはランダムな順序で評価されます。

たとえば、プロパティが次のように宣言されている場合(モデルのフィールドは小数であり、メソッドバリデーターdecimal.TryParseは値が0以上であるかどうかを確認します)。

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

動作が次のとおりであることを確認する単体テストがあります。

  • フィールドが空白の場合、エラーは「必須」である必要があります。
  • フィールドに解析されないものがある場合、エラーは「無効」である必要があります。

ときどき、別のファイルで何かを変更し、すべてのテストを実行すると、これは失敗します。プロパティ宣言の属性の順序を入れ替えると、テストが修正されます。

これらの属性が適用される順序を指定する方法はありますか?

4

1 に答える 1

1

順序を指定する方法はないと思います。Reflectionがそれらを返す順序です。nullを検出し、(誤って)有効としてマークするには、IsAbcValidをリグする必要がある場合があります。

于 2011-11-18T07:30:40.657 に答える