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 €"对信用无效。 被翻译成另一种语言?

我没有包括客户端验证脚本。

MVC 服务器端验证并不总是本地化的,为什么

在文件夹 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.