【发布时间】:2012-03-06 10:42:18
【问题描述】:
有没有办法更改 FluentValidation 中的默认错误消息?
我们能够为更复杂的类型设置验证,但我们似乎无法理解简单的“您输入的数据不是 int”风格的东西。
这些的内置错误是:'值 x 对 y 无效'或类似的东西 - 有没有办法覆盖这些?
【问题讨论】:
标签: c# asp.net-mvc validation fluentvalidation
有没有办法更改 FluentValidation 中的默认错误消息?
我们能够为更复杂的类型设置验证,但我们似乎无法理解简单的“您输入的数据不是 int”风格的东西。
这些的内置错误是:'值 x 对 y 无效'或类似的东西 - 有没有办法覆盖这些?
【问题讨论】:
标签: c# asp.net-mvc validation fluentvalidation
没有简单/干净的方法可以实现这一目标。第一种可能性是在应用程序启动时覆盖DefaultModelBinder.ResourceClassKey 属性并将其指向自定义资源文件:
protected void Application_Start()
{
RegisterRoutes(RouteTable.Routes);
DefaultModelBinder.ResourceClassKey = "Messages";
}
然后在App_GlobalResources/Messages.resx中定义键PropertyValueInvalid。
另一种可能性是按照 Jeremy Skinner 的建议在您的视图模型上使用 backing field。
原因是此错误消息是由默认模型绑定器在字段上发生任何验证之前生成的。在您可以验证该字段之前,必须首先为其分配一个值。由于您试图在模型绑定期间将不代表有效整数的字符串转换为整数,因此默认模型绑定器会分配默认消息。
【讨论】:
您也可以覆盖它。
点击以下链接 http://fluentvalidation.codeplex.com/wikipage?title=Customising
【讨论】: