C# MVC服务器端验证不总是本地化的,为什么?
我的视图模型中有以下属性:C# MVC服务器端验证不总是本地化的,为什么?,c#,asp.net-mvc,validation,localization,C#,Asp.net Mvc,Validation,Localization,我的视图模型中有以下属性: public decimal Credit { get; set; } [EmailAddress] public string TestEmail { get; set; } 我使用@Html.ValidationSummary(),在服务器端验证中得到了这两条错误消息: “97,50欧元”值对贷记无效 这是一封由基恩·居尔蒂奇(keine gültige)发来的电子邮件地址 第二个是使用[EmailAddress]属性进行的完美翻译。然而第一个,仍然是英语
public decimal Credit { get; set; }
[EmailAddress]
public string TestEmail { get; set; }
我使用@Html.ValidationSummary()
,在服务器端验证中得到了这两条错误消息:
- “97,50欧元”值对贷记无效
- 这是一封由基恩·居尔蒂奇(keine gültige)发来的电子邮件地址
[EmailAddress]
属性进行的完美翻译。然而第一个,仍然是英语。为什么?
我在谷歌上搜索了一下,但每个解决方案都在谈论定制验证消息。我想要的是默认的验证消息,但会转换为我的区域性,如[EmailAddress]
属性
我的web.config中有以下内容:
<system.web>
<globalization culture="de-DE" uiCulture="de-DE"/>
因此,我如何使消息中的值“97,50欧元”对信用无效。翻译成另一种语言
我没有包括客户端验证脚本。在文件夹
App\u GlobalResources
中创建Messages.resx
。
添加以下行:
不动产价值无效{0}是für das Feld{1}nicht erlaubt
然后指向应用程序启动()中的Messages.resx
其他一些可能会有所帮助:
FieldMustBeDate | Das Feld{0}是kein gültiges数据
FieldMustBeNumeric | Das Feld{0}是keine gültige Zahl
PropertyValueRequired | Das Feld“{0}”是erforderlich
也许是一个愚蠢的问题,但值得检查,您是否将其放在了正确的web.config中?(有两个)。我已经把它放到了rootlevelweb.config
中。所有更深层次的配置都没有此值@但是为什么[emailAddress]
有效呢?.NET真的只是局部本地化吗?@ChristianGollhardt这只是MVC默认本地化中的一个bug。你只找到一个,但在那里。奇怪。没想到在这样一个经过战斗测试的框架中,这样的基本东西会有bug@teovankotI还没有尝试过,但我认为我们需要定义一下。如果是这样的话,我认为这应该添加到解决方案中,以供将来的读者使用。
ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
DefaultModelBinder.ResourceClassKey = "Messages";