【发布时间】:2011-09-14 06:26:02
【问题描述】:
我收到验证消息“值 xxx 对 yyy 无效”。当我为双精度类型发布不正确的值时会发生这种情况。不知道怎么改。
【问题讨论】:
标签: asp.net-mvc fluentvalidation
我收到验证消息“值 xxx 对 yyy 无效”。当我为双精度类型发布不正确的值时会发生这种情况。不知道怎么改。
【问题讨论】:
标签: asp.net-mvc fluentvalidation
不幸的是,这不是 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);
}
}
【讨论】:
您可以使用.WithMessage() 方法自定义错误消息:
RuleFor(x => x.Foo)
.NotEmpty()
.WithMessage("Put your custom message here");
如果您想将本地化消息与资源一起使用:
RuleFor(x => x.Foo)
.NotEmpty()
.WithLocalizedMessage(() => MyLocalizedMessage.FooRequired);
【讨论】: