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-02-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

如果你想处理的情况,你的模型需要一个可以为空的整数,否则它是默认的模型绑定器,当它试图将空字符串解析为一个不可为空的整数时,它会自动添加一个验证错误:

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 回答