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

MVC 5 - Default message and localization of DataAnnotations (email, Url etc)

我正在尝试查找 MVC 5 中 DataAnnotations 默认消息的键。

目前,我找到并成功使用了那些:

FieldMustBeDate
FieldMustBeNumeric
PropertyValueInvalid
PropertyValueRequired

它们在资源文件中:App_GlobalResources\Messages

我的 global.asax 添加了这些行:

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

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

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

[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; }

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

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

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