我正在使用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);
}
}
(但如果没有其他办法,我会满足于此)
答案 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语言包来解决它。
另见