Переопределить сообщение ASP.NET MVC по умолчанию в FluentValidation - PullRequest
6 голосов
/ 14 сентября 2011

Я получаю сообщение проверки «Значение xxx недействительно для гггг».Это происходит, когда я публикую неправильное значение для двойного типа.Я понятия не имею, как это изменить.

Ответы [ 2 ]

7 голосов
/ 15 сентября 2011

К сожалению, это не то, что FluentValidation может переопределить - модель расширяемости для проверки MVC во многих местах несколько ограничена, и я не смог найти способ переопределить это конкретное сообщение.

Альтернативный подход, который вы можете использовать, состоит в том, чтобы определить два свойства в вашей модели представления - одно в виде строки, а другое в виде двойного значения, допускающего обнуляемость.Вы бы использовали строковое свойство для привязки MVC, а свойство double выполнит преобразование (если это возможно).Затем вы можете использовать это для проверки:

public class FooModel {
   public string Foo { get; set; }

   public double? ConvertedFoo {
      get {
          double d;
          if(double.TryParse(Foo, out d)) {
             return d;
          }
          return null;
      }
   }
}


public class FooValidator : AbstractValidator<FooModel> {
   public FooValidator() {
      RuleFor(x => x.ConvertedFoo).NotNull();
      RuleFor(x => x.ConvertedFoo).GreaterThan(0).When(x => x.ConvertedFoo != null);
   }
}
0 голосов
/ 15 сентября 2011

Вы можете использовать метод .WithMessage() для настройки сообщения об ошибке:

RuleFor(x => x.Foo)
    .NotEmpty()
    .WithMessage("Put your custom message here");

и, если вы хотите использовать локализованные сообщения с ресурсами:

RuleFor(x => x.Foo)
    .NotEmpty()
    .WithLocalizedMessage(() => MyLocalizedMessage.FooRequired);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...