【问题标题】:fluentvalidation change default error message for int/longfluentvalidation 更改 int/long 的默认错误消息
【发布时间】:2012-03-06 10:42:18
【问题描述】:

有没有办法更改 FluentValidation 中的默认错误消息?

我们能够为更复杂的类型设置验证,但我们似乎无法理解简单的“您输入的数据不是 int”风格的东西。

这些的内置错误是:'值 x 对 y 无效'或类似的东西 - 有没有办法覆盖这些?

【问题讨论】:

    标签: c# asp.net-mvc validation fluentvalidation


    【解决方案1】:

    没有简单/干净的方法可以实现这一目标。第一种可能性是在应用程序启动时覆盖DefaultModelBinder.ResourceClassKey 属性并将其指向自定义资源文件:

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);
        DefaultModelBinder.ResourceClassKey = "Messages";
    }
    

    然后在App_GlobalResources/Messages.resx中定义键PropertyValueInvalid

    另一种可能性是按照 Jeremy Skinner 的建议在您的视图模型上使用 backing field

    原因是此错误消息是由默认模型绑定器在字段上发生任何验证之前生成的。在您可以验证该字段之前,必须首先为其分配一个值。由于您试图在模型绑定期间将不代表有效整数的字符串转换为整数,因此默认模型绑定器会分配默认消息。

    【讨论】:

    【解决方案2】:

    您也可以覆盖它。

    点击以下链接 http://fluentvalidation.codeplex.com/wikipage?title=Customising

    【讨论】:

    • 这些都适用于有 RuleFor 的地方 - 框架隐含了 int/long 数据类型验证,因此没有 RuleFor 可以挂钩
    猜你喜欢
    • 2018-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 1970-01-01
    • 2012-01-24
    • 2017-03-09
    相关资源
    最近更新 更多