5

次のコードがあります。

public class NewsEditViewDataValidator : AbstractValidator<NewsEditViewData>
{
     public NewsEditViewDataValidator()
     {
          // Status unique identifier cannot be empty
          // Status unique identifier must be greater or equal to 1
          RuleFor(x => x.StatusId)
               .NotEmpty()
               .WithMessage("Status is required")
               .GreaterThanOrEqualTo(1)
               .WithMessage("Status unique identifier must be greater or equal to 1");

          // Other rule sets
     }
}

StatusId は整数です。この場合、NotEmpty はどのように機能しますか? それは何を検証しますか?整数または文字列? 整数が空でないことをチェックするこの部分の単体テストはどのようになりますか?

これは、MVC 3 アプリケーションでドロップダウン リストを検証するために使用されます。検証はビューでうまく機能します。GreaterThanOrEqualTo の部分は、ステータスの一意の識別子が 1 未満になることはありません。これをトリガーして、オブジェクトを検証したいと考えています。このようにすると、NotEmpty も起動しないのはいつですか? どちらが最初に解雇されるかについて好みはありますか? StatusId が 0 の場合、どのルール セットが起動しますか? -1なら?ビジネス オブジェクトの ID をチェックするときに、ビューと GreaterThanOrEqualTo で NotEmpty を使用したいと考えています。助言がありますか?

4

3 に答える 3

19

ドキュメントを見てください:

NotEmpty バリデーター

説明: 指定されたプロパティが null、空の文字列、または空白 (または値型のデフォルト値、たとえば int の 0 ) でないことを確認します。

そのNotEmpty()ため、そのプロパティのデフォルト値 (0) のみを回避します。

于 2011-02-02T14:15:12.157 に答える
2

ソースコードをダウンロードして、不明な場合はコード/テストを調べることをお勧めします。

StatusIdですinteger。この場合、どのように機能しNotEmptyますか?それは何を検証しますか?

StatusId の値がそのタイプのデフォルト値であること。(0)

整数または文字列?

StatusId の型、int。

integeranが空でないことをチェックするこの部分の単体テストはどのように なりますか?

var validator = new NewsEditViewDataValidator();
validator.ShouldHaveValidationErrorFor(x => x.StatusID, 0);

これは、MVC 3 アプリケーションでドロップダウン リストを検証するために使用されます。検証はビューでうまく機能します。重要なのGreaterThanOrEqualToは、ステータスの一意の識別子が 未満になることは決してないということです1。これは、オブジェクトを検証するためにトリガーしたいものです。この方法でNotEmpty も発火しないのはいつですか?

when または until を使用して、ルールをテストする必要がある場合とテストしない場合を指定します。

 どちらが最初に解雇されるかについて好みはありますか?

ご指定いただいた順番でいいと思います。

どのルール セットが起動するStatusIdか ?0

設定したカスケード オプションに応じて、検証は最初のエラーで失敗するか、プロパティの他のルールをチェックします。

 もしそうなら-1

2 番目のルールは失敗します。

ビューとビジネスオブジェクトのIDをチェックするときNotEmptyに作業したいと思います。GreaterThanOrEqualTo助言がありますか?

于 2011-04-26T16:33:06.460 に答える