2011-02-09 43 views
4

我在ASP.NET MVC 3应用程序中使用FluentValidation。关于数字问题的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"); 

回答

5

如果你想处理 为空如果您的模型需要一个可为空的整数,否则它是默认的模型联编程序,它会在尝试解析空str时自动添加验证错误荷兰国际集团的非空整型:

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"); 


UPDATE:

的以下工作适用于最新版本的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"); 
+0

我保持我的财产一个int,我换成NOTNULL的NotEmpty,它工作正常,但你的方式更好? – 2011-02-14 05:59:24

0

它与FluentValidation版本3.2的工作

RuleFor(x => x.MaxNumberTeamMembers) 
    .NotNull() 
    .WithMessage("Please Enter Value") 
    .InclusiveBetween(1, 500) 
    .WithMessage("Value must be number Beetween 1 , 500");