Luk*_*tný 4 validation attributes localization data-annotations asp.net-mvc-3
我正在使用System.ComponeneModel.DataAnnotations属性,例如Required和StringLength.是否可以全局本地化其错误消息?
我知道我能做到这一点
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
Run Code Online (Sandbox Code Playgroud)
但到处都这样,我使用必需的属性将是疯狂的.另外我想避免像这样的东西:
public class LocalizedRequiredAttribute : RequiredAttribute {
public LocalizedRequiredAttribute()
: base() {
ErrorMessageResourceName = "Required";
ErrorMessageResourceType = typeof(Resources.Validation);
}
}
Run Code Online (Sandbox Code Playgroud)
(但如果没有其他办法,我会满足于此)
AFAIK您需要自定义属性或指定ErrorMessageResourceName和ErrorMessageResourceType属性.还有另一种可能性,这里详细:
在App_GlobalResources中创建一个全局资源类,并将DefaultModelBinder.ResourceClassKey设置为此类的名称(例如,如果您创建了"Messages.resx",则将ResourceClassKey设置为"Messages").
您可以在MVC 2中覆盖两个字符串:
当用户输入的数据与数据类型不兼容时(例如,为整数字段键入"abc"),将使用"PropertyValueInvalid"的字符串值.默认消息是:"值"{0}"对{1}无效."
当用户未输入不可为空的字段的任何数据时(例如,整数字段),将使用"PropertyValueRequired"的字符串值.默认消息是:"需要一个值."
在第二种情况下需要注意的是,如果您的验证器提供程序列表(默认情况下)中有DataAnnotationsModelValidatorProvider,那么您将永远不会看到第二条消息.此提供程序查看非可选字段并向其添加隐含[Required]属性,以便其消息与具有显式[Required]属性的其他字段保持一致,并确保您获得所需字段的客户端验证.
归档时间: |
|
查看次数: |
5276 次 |
最近记录: |