Die*_*_DX 34 validation asp.net-mvc localization numbers data-annotations
如何更改所有int字段的消息,而不是说:
The field must be a number 用英文表示:
El campo tiene que ser numerico 在西班牙语中.
有办法吗?
Len*_*rri 62
如果您正好使用ASP.NET MVC 4,请查看此帖子:
在ASP.NET MVC和WebForms中本地化默认错误消息
基本上你必须在你的Application_Start()方法中添加以下代码Global.asax:
ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
DefaultModelBinder.ResourceClassKey = "Messages";
Run Code Online (Sandbox Code Playgroud)
在Visual Studio内的解决方案资源管理器中右键单击您的ASP.NET MVC项目并选择Add => Add ASP.NET Folder => App_GlobalResources.
现在.resx在此文件夹中添加一个名为的文件Messages.resx.
最后在该.resx文件中添加以下字符串资源:
Name Value
==== =====
FieldMustBeDate The field {0} must be a date.
FieldMustBeNumeric The field {0} must be a number.
PropertyValueInvalid The value '{0}' is not valid for {1}.
PropertyValueRequired A value is required.
Run Code Online (Sandbox Code Playgroud)
你应该好好去.
请注意,您感兴趣的值是FieldMustBeNumeric.要将其本地化为西班牙语,您必须添加另一个名为的资源文件Messages.es.resx.在此特定.resx文件中,将资源值替换为:
Name Value
==== =====
FieldMustBeNumeric El campo {0} tiene que ser numerico.
Run Code Online (Sandbox Code Playgroud)
如果您正好使用ASP.NET MVC 3,此解决方案可以帮助您实现相同的结果:https://stackoverflow.com/a/2551481/114029
您可以设置自定义消息以进行验证.
[RegularExpression("\d{9}",ErrorMessage="El campo tiene que ser numerico")]
public decimal UnitPrice { get; set; }
Run Code Online (Sandbox Code Playgroud)