【问题标题】:asp.net MVC3 DefaultModelBinder error messages keysasp.net MVC3 DefaultModelBinder 错误消息键
【发布时间】:2011-08-31 16:41:47
【问题描述】:

stackoverflow 和其他网站上有很多关于翻译 DefaultModelBinder 提供的默认错误消息的问题(和答案),例如 this onethis one

这些问题的所有答案基本上都是为了在 App_GlobalResources 下创建一个资源 (resx) 文件并为“PropertyValueInvalid”添加一条消息。

没关系,它确实有效,但也有 other 消息(例如“值 xxx 必须是数字”),最大的问题是:在哪里在地狱中,我可以有一个用于模型绑定验证的消息键列表,并描述它们用于的上下文,以便我可以翻译它们中的每一个吗?

【问题讨论】:

    标签: asp.net asp.net-mvc-3 resources localization


    【解决方案1】:

    在 Application_Start 方法中设置 DefaultModelBinder.ResourceClassKey = "ResourceFileName"; 时,DefaultModelBinder 类使用的资源键与 Asp.Net MVC 使用的资源文件中定义的资源键不同。

    在反汇编 DefaultModelBinder 时,有一个方法 GetUserResourceString 从自定义资源文件中读取。此函数仅使用这些消息键调用两次:

    • PropertyValueRequired(需要一个值。)
    • PropertyValueInvalid(值“{0}”对 {1} 无效。)

    这些是 MVC3 中可以为 DefaultModelBinder 设置的唯一消息。

    【讨论】:

    • 似乎不起作用 (MVC4)。我使用自定义消息在 App_GlobalResources 中添加了 ErrorMessages.resx,然后设置 DefaultModelBinder.ResourceClassKey = "ErrorMessages"; ClientDataTypeModelValidatorProvider.ResourceClassKey = "ErrorMessages";在 Global.asax Application_Start... 中,仍然显示标准消息。我添加的键:FieldMustBeDate、FieldMustBeNumeric(这些工作)、PropertyValueInvalid、PropertyValueRequired(这两个不工作)
    • 我正在使用 MVC4,它对我有用。您是手动创建了一个文件夹并将其命名为 App_Globalresources 还是您右键单击该项目并添加了一个 ASP.NET 文件夹?另外,我没有添加这个:ClientDataTypeModelValidatorProvider.ResourceClassKey = "ErrorMessages"
    猜你喜欢
    • 2013-03-18
    • 1970-01-01
    • 2011-08-08
    • 1970-01-01
    • 1970-01-01
    • 2014-08-15
    • 2012-02-15
    • 2011-08-28
    • 1970-01-01
    相关资源
    最近更新 更多