6

ASP.NET MVC 3 アプリケーションで FluentValidation を使用しています。

ビューモデルに MaxNumberTeamMembers プロパティがあります。

/// <summary>
/// Gets or sets the maximum number of team members.
/// </summary>
public int MaxNumberTeamMembers { get; set; }

次のルールセットが可能かどうかを知りたい:

  • フロントエンドビューで、テキストボックスが空の場合、「MaxNumberTeamMembers が必要です」というメッセージが表示されるようにします
  • 入力した数が 1 未満の場合、「MaxNumberTeamMembers は 1 以上である必要があります」というメッセージを表示します。

上記のルールセットはどのようになりますか?

私は次のものを持っていますが、0 を入力すると GreaterThan 部分では機能しません:

RuleFor(x => x.MaxNumberTeamMembers)
     .NotEmpty()
     .WithMessage("Max. number of team members is required")
     .GreaterThan(0)
     .WithMessage("Max. number of team members must be greater than 0");

2011 年 2 月 14 日更新:

RuleFor(x => x.MinNumberCharactersCitation)
   .NotNull()
   .WithMessage("Min. number of characters for citation is required")
   .GreaterThanOrEqualTo(1)
   .WithMessage("Min. number of characters for citation must be greater than or equal to 1")
   .LessThanOrEqualTo(x => x.MaxNumberCharactersCitation)
   .WithMessage("Min. number of characters must be less than or equal to max. number of characters");
4

2 に答える 2

6

のケースを処理する場合は、モデルにnull許容整数が必要です。それ以外の場合は、空の文字列をnull許容でない整数に解析しようとしたときに検証エラーが自動的に追加されるデフォルトのモデルバインダーです。

public int? MaxNumberTeamMembers { get; set; }

次に、このプロパティに次の検証ルールを設定できます。

RuleFor(x => x.MaxNumberTeamMembers)
    .NotEmpty()
    .WithMessage("Max. number of team members is required")
    .Must(x => x.Value > 0)
    .When(x => x.MaxNumberTeamMembers != null)
    .WithMessage("Max. number of team members must be greater than 0");


アップデート:

以下は、FluentValidationの最新バージョンで正常に機能します。

RuleFor(x => x.MaxNumberTeamMembers)
    .NotNull()
    .WithMessage("Max. number of team members is required")
    .GreaterThan(0)
    .WithMessage("Max. number of team members must be greater than 0");
于 2011-02-11T20:01:35.780 に答える
2

FluentValidation バージョン 3.2 で動作します

RuleFor(x => x.MaxNumberTeamMembers)
    .NotNull()
    .WithMessage("Please Enter Value")
    .InclusiveBetween(1, 500)
    .WithMessage("Value must be number Beetween 1 , 500"); 
于 2012-01-15T15:38:01.090 に答える