【发布时间】:2010-04-12 05:47:05
【问题描述】:
我的任务是更改 MVC2.0 中 DataAnnotation 验证属性的 ErrorMessage 属性。例如,我应该能够传递一个 ID 而不是 Model 属性的实际错误消息,并使用该 ID 从另一个服务(例如数据库)检索一些内容(错误消息),并在视图中显示该错误消息而不是ID。为此,我需要设置 DataAnnotation 验证属性的 ErrorMessage 属性。
[StringLength(2, ErrorMessage = "EmailContentID.")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
只需重写 DataAnnotationsModelValidatorProvider 似乎是一项简单的任务 protected override IEnumerable GetValidators(ModelMetadata 元数据,ControllerContext 上下文,IEnumerable 属性)
不过好像已经够复杂了。
一个。 MVC DataannotationsModelValidator 的 ErrorMessage 属性是只读的。所以我不能在这里设置任何东西 湾。 System.ComponentModel.DataAnnotationErrorMessage 属性(获取和设置)已在 MVC DataannotationsModelValidator 中设置,因此我们无法再次设置。如果您尝试设置,则会出现“该属性不能设置多次...”错误消息。
public class CustomDataAnnotationProvider : DataAnnotationsModelValidatorProvider
{
protected override IEnumerable<ModelValidator> GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable<Attribute> attributes)
{
IEnumerable<ModelValidator> validators = base.GetValidators(metadata, context, attributes);
foreach (ValidationAttribute validator in validators.OfType<ValidationAttribute>())
{
messageId = validator.ErrorMessage;
validator.ErrorMessage = "Error string from DB And" + messageId ;
}
//......
}
}
谁能帮我解决这个问题?
【问题讨论】:
标签: asp.net-mvc-2