FluentValidation по вопросу номера - PullRequest
4 голосов
/ 09 февраля 2011

Я использую FluentValidation в своем приложении ASP.NET MVC 3.

У меня есть свойство MaxNumberTeamMembers в моей модели представления как таковое:

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

Я хочу знать, если следующеенабор правил возможен:

  • Если во внешнем виде, если текстовое поле пустое, я хочу, чтобы выводилось сообщение «MaxNumberTeamMembers»
  • Если введенное число меньше1, тогда я хочу, чтобы сообщение отображало «MaxNumberTeamMembers должен быть больше или равен 1».

Как бы выглядел набор правил для вышеупомянутого?

У меня есть следующее, но ононе работает в части GreaterThan, если я ввожу 0:

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

Ответы [ 2 ]

5 голосов
/ 11 февраля 2011

Если вы хотите обработать случай пусто , вам нужно целое число, допускающее обнуляемость в вашей модели, потому что в противном случае это связыватель модели по умолчанию, который автоматически добавит ошибку проверки при попытке проанализировать пустойстрока в целое число, которое не может быть пустым:

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");
0 голосов
/ 15 января 2012

это работа с FluentValidation версии 3.2

RuleFor(x => x.MaxNumberTeamMembers)
    .NotNull()
    .WithMessage("Please Enter Value")
    .InclusiveBetween(1, 500)
    .WithMessage("Value must be number Beetween 1 , 500"); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...