Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MVC服务器端验证不总是本地化的,为什么?_C#_Asp.net Mvc_Validation_Localization - Fatal编程技术网

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中?(有两个)。我已经把它放到了rootlevel
web.config
中。所有更深层次的配置都没有此值@但是为什么
[emailAddress]
有效呢?.NET真的只是局部本地化吗?@ChristianGollhardt这只是MVC默认本地化中的一个bug。你只找到一个,但在那里。奇怪。没想到在这样一个经过战斗测试的框架中,这样的基本东西会有bug@teovankotI还没有尝试过,但我认为我们需要定义一下。如果是这样的话,我认为这应该添加到解决方案中,以供将来的读者使用。
ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
DefaultModelBinder.ResourceClassKey = "Messages";