6

我收到验证消息“值 xxx 对 yyy 无效”。当我为双精度类型发布不正确的值时会发生这种情况。我不知道如何改变它。

4

2 回答 2

7

不幸的是,这不是 FluentValidation 能够覆盖的东西——MVC 验证的可扩展性模型在许多地方都有些限制,而且我还没有找到一种方法来覆盖这个特定的消息。

您可以使用的另一种方法是在视图模型上定义两个属性 - 一个作为字符串,一个作为可为空的双精度。您可以将 string 属性用于 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);
   }
}
于 2011-09-15T14:12:02.460 回答
0

您可以使用该.WithMessage()方法自定义错误消息:

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

如果您想将本地化消息与资源一起使用:

RuleFor(x => x.Foo)
    .NotEmpty()
    .WithLocalizedMessage(() => MyLocalizedMessage.FooRequired);
于 2011-09-14T20:51:12.510 回答