MVC 5 - DataAnnotations的默认消息和本地化(电子邮件,URL等)

时间:2015-12-10 14:06:03

标签: c# asp.net-mvc localization asp.net-mvc-5 data-annotations

我正在尝试在MVC 5中找到DataAnnotations的默认消息的密钥。

目前,我发现并使用了那些成功的东西:

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

它们位于资源文件中:App_GlobalResources \ Messages

这些行已添加到我的global.asax:

[Display(Name = "Website", ResourceType = (typeof(Properties.Resources)))]
[DataType(DataType.Url)]
[Url]
public string Website { get; set; }

[Display(Name = "Email", ResourceType = (typeof(Properties.Resources)))]
[DataType(DataType.EmailAddress)]
[EmailAddress]
public string Email { get; set; }

[Display(Name = "PhoneNumber", ResourceType = (typeof(Properties.Resources)))]
[Required]
[DataType(DataType.PhoneNumber)]
[Phone]
public string PhoneNumber { get; set; }

现在,所有这一切都很完美,我在资源文件中配置的消息正确显示。

但是现在我正在尝试为其他错误消息找到资源的属性名称,目前正在寻找这些:

my_module

我尝试了一些组合,比如FieldMustBeEmail和FieldMustBeEmailAddress,但它没有用。它们是否与FieldMustBeDate一样可用,或者我需要创建自己的DataAnnotations?

1 个答案:

答案 0 :(得分:2)

我检查了MVC的源代码,唯一的方法是设置属性的 ErrorMessageResourceType ErrorMessageResourceName ,然后将其添加到我的本地资源中文件:

[Display(Name = "Email", ResourceType = (typeof(Properties.Resources)))]
[DataType(DataType.EmailAddress)]
[EmailAddress(ErrorMessageResourceType = (typeof(App_GlobalResources.Messages)), ErrorMessageResourceName = "EmailAddressAttribute_Invalid")]
public string Email { get; set; }