MVC Serverside验证并不总是本地化,为什么?

时间:2016-01-28 16:19:21

标签: c# asp.net-mvc validation localization

我在View模型中有以下属性:

public decimal Credit { get; set; }

[EmailAddress]
public string TestEmail { get; set; }

我使用@Html.ValidationSummary() Serverside 验证中收到以下2条错误消息:

  • 值'97,50€'对Credit不起作用。
  • Das FeldTestEmailenthältkeinegültigeE-Mail-Adresse。

第二个是使用[EmailAddress]属性完美翻译的。然而第一个,仍然是英语。为什么呢?

我已经google了一下,但每个解决方案都在谈论自定义验证消息。我想要的是默认的验证消息,但是转换为我的文化,就像[EmailAddress]属性一样。

我在web.config中有这个:

<system.web>
    <globalization culture="de-DE" uiCulture="de-DE"/>

那么如何才能发出消息值'97,50€'对于Credit无效。被翻译成另一种语言?

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

1 个答案:

答案 0 :(得分:1)

在文件夹Messages.resx中创建App_GlobalResources。 添加以下行:

  

PropertyValueInvalid | Der Wert“{0}”istfürdasFeld“{1}”nicht erlaubt。

然后指向Messages.resx

中的Application_Start()
ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
DefaultModelBinder.ResourceClassKey = "Messages";

其他一些可能有帮助的人:

  

FieldMustBeDate | Das Feld“{0}”istkeigültigesGeatum。

     

FieldMustBeNumeric | Das Feld“{0}”istkeinegültigeZahl。

     

PropertyValueRequired | Das Feld“{0}”ist erforderlich。