MVC 服务器端验证并不总是本地化的,为什么
本文关键字:本地化 为什么 服务器端 验证 MVC | 更新日期: 2023-09-27 18:32:22
我的视图模型中有以下属性:
public decimal Credit { get; set; }
[EmailAddress]
public string TestEmail { get; set; }
我在服务器端验证中收到了以下 2 条错误消息,使用 @Html.ValidationSummary()
:
- 值"97,50 €"不适用于积分。
- Das Feld TestEmail enthält keine gültige E-Mail-Adresse.
第二个是使用 [EmailAddress]
属性完美翻译的。然而,第一个,仍然是英文的。为什么?
我已经用谷歌搜索了一下,但每个解决方案都在谈论自定义验证消息。我想要的是默认的验证消息,但已转换为我的区域性,如[EmailAddress]
属性。
我在我的 web.config 中有这个:
<system.web>
<globalization culture="de-DE" uiCulture="de-DE"/>
那么我该如何使消息 值"97,50 €"对信用无效。 被翻译成另一种语言?
我没有包括客户端验证脚本。
在文件夹 App_GlobalResources
中创建Messages.resx
。添加以下行:
属性值无效 |Der Wert "{0}" ist für das Feld "{1}" nicht erlaubt.
然后指向你Application_Start()
中的Messages.resx
ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
DefaultModelBinder.ResourceClassKey = "Messages";
其他一些可能会有所帮助:
字段必须日期 |Das Feld "{0}" ist kein gültiges Datum.
字段必须数字 |Das Feld "{0}" ist keine gültige Zahl.
属性值必填 |Das Feld "{0}" ist erforderlich.