39

如何更改所有int字段的消息,而不是说:

The field must be a number在英语中,它显示:

El campo tiene que ser numerico在西班牙语中。

有没有办法?

4

3 回答 3

66

如果您碰巧使用的是 ASP.NET MVC 4 以后的版本,请查看这篇文章:

在 ASP.NET MVC 和 WebForms 中本地化默认错误消息

Application_Start()基本上你必须在你的方法中添加以下代码Global.asax

 ClientDataTypeModelValidatorProvider.ResourceClassKey = "Messages";
 DefaultModelBinder.ResourceClassKey = "Messages";

在 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.

你应该很高兴。

请注意,您感兴趣的值是FieldMustBeNumeric. 要将其本地化为西班牙语,您必须添加另一个名为Messages.es.resx. 在此特定.resx文件中,将资源值替换为:

Name                Value
====                =====
FieldMustBeNumeric  El campo {0} tiene que ser numerico.

如果您碰巧向下使用 ASP.NET MVC 3,此解决方案可以帮助您达到相同的结果:https ://stackoverflow.com/a/2551481/114029

于 2013-08-22T23:37:28.207 回答
7

您可以设置自定义消息以进行验证。

 [RegularExpression("\d{9}",ErrorMessage="El campo tiene que ser numerico")]
 public decimal UnitPrice { get; set; } 
于 2012-08-23T20:47:53.217 回答
0

如果要为每个 Integer 、 double 和 float 指定自定义消息。您可以将范围属性与字符串一起使用,如下所示。

    [Required(ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "YearOfEstablishmentRequired")]
    [Range(0, int.MaxValue, ErrorMessageResourceType = typeof(Global), ErrorMessageResourceName = "ValidYearOfEstablishment")]
    [Display(Name = "Year Of Establishment")]
    public string YearOfEstablishment { get; set; }

现在如上所述,您可以为每个属性指定自定义消息。

于 2014-07-24T07:50:59.470 回答