asp.net - 默认模型Binder的MVC本地化

标签 asp.net asp.net-mvc globalization resx

我目前正在尝试弄清楚如何本地化 MVC 生成的错误消息。让我以默认模型绑定(bind)器为例,这样我就可以解释问题了。

假设我有一个表格,用户可以在其中输入年龄。然后用户在表单中输入“十”,但没有得到预期的错误

"Age must be beween 18 and 25."



消息

"The value 'ten' is not valid for Age."



被陈列。

实体的年龄属性定义如下:
    [Range(18, 25, ErrorMessageResourceType = typeof (Errors), 
        ErrorMessageResourceName = "Age", ErrorMessage = "Range_ErrorMessage")]    
    public int Age { get; set; }

经过一番挖掘,我注意到这个错误文本来自 System.Web.Mvc.Resources.DefaultModelBinder_ValueInvalidMvcResources.resx文件。

现在,如何创建此文件的本地化版本?

作为一个解决方案,例如,我应该下载 MVC 源并添加 MvcResources.en_GB.resx , MvcResources.fr_FR.resx , MvcResources.es_ES.resxMvcResources.de_DE.resx ,然后编译我自己版本的MVC.dll ?

但我不喜欢这个主意。还有人知道更好的方法吗?

最佳答案

http://forums.asp.net/p/1512140/3608427.aspx ,向下滚动到该页面底部附近的 Brad Wilson 的回复(2010 年 1 月 9 日星期六,下午 3:20)。 DefaultModelBinder 上有一些静态属性,您可以设置这些属性来本地化一般错误消息。

使用通用错误消息而不是 [Range] 消息的原因是 [Range] 提供了验证错误消息,但这种特殊情况是绑定(bind)错误。框架绝对不可能将字符串“十”转换为 Int32,因此它甚至无法触发 [Range] 验证器。这就是该论坛中提到的“PropertyValueInvalid”键控制的内容。

关于asp.net - 默认模型Binder的MVC本地化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462690/

相关文章:

c# - 滚动时修复 gridview 标题

asp.net - 如何对 ASP.NET/blazor 中的 POST url 进行健康检查

c# - 跨页发布 GridView

asp.net - 我们可以记录 Bundle 错误吗?

android - 在 Android 上进行单元测试期间的语言环境

c# - 将 ASP MVC5 站点部署到 Azure,收到 500 内部服务器错误

ajax - 替换 Mvc 部分 View 后的 select2 jquery 不再起作用

c# - 使用 LINQ 从 RegionInfo 获取 CultureInfo

javascript - 如何在 JavaScript 中使用全局化?

asp.net-mvc - 日期选择器编辑器模板