全局本地化验证

时间:2011-03-22 17:03:54

标签: validation asp.net-mvc-3 localization attributes data-annotations

我正在使用System.ComponeneModel.DataAnnotations属性,例如Required和StringLength。是否可以全局本地化其错误消息?

我知道我可以做到这一点

[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]

但是到处都这样,我使用必需的属性只会是疯了。另外我想避免像:

这样的东西
public class LocalizedRequiredAttribute : RequiredAttribute {
    public LocalizedRequiredAttribute()
        : base() {
        ErrorMessageResourceName = "Required";
        ErrorMessageResourceType = typeof(Resources.Validation);
    }
}

(但如果没有其他办法,我会满足于此)

2 个答案:

答案 0 :(得分:8)

AFAIK您需要自定义属性或指定ErrorMessageResourceName和ErrorMessageResourceType属性。还有另一种可能性detailed here

  

在中创建一个全局资源类   App_GlobalResources,并设置   DefaultModelBinder.ResourceClassKey to   这个类的名称(例如,   如果您制作了“Messages.resx”,则设置   ResourceClassKey为“Messages”)。

     

您可以覆盖两个字符串   在MVC 2中:

     
      
  • 的字符串值   当使用“PropertyValueInvalid”时   用户输入的数据不是   与数据类型兼容(for   例如,输入“abc”表示   整数字段)。默认消息   对于这个:“值'{0}'不是   适用于{1}。“

  •   
  • 的字符串值   当使用“PropertyValueRequired”时   用户没有输入任何数据   不可空的字段(for   例如,一个整数字段)。该   默认消息是:“一个值   是必需的。“

  •   
     

重要的是要注意   在第二种情况下,如果你有   该   DataAnnotationsModelValidatorProvider   在验证器提供程序列表中   (默认情况下),然后你   永远不会看到第二条消息。   此提供程序会看到非可选字段   并添加暗示[必填]   他们归因于他们   消息将与其他消息一致   显式字段[必填]   属性并确保你得到   客户端验证所需   字段。

答案 1 :(得分:1)

对于MVC3,请参阅DataAnnotationsResources。它是“RequiredAttribute_ValidationError”等等。 您可以通过安装.NET Framework语言包来解决它。

另见