我需要在 MVC 2.0 中设置 DataAnnotation 的验证属性的 ErrorMessage 属性。例如,我应该能够传递一个 ID 而不是 Model 属性的实际错误消息,例如...
[StringLength(2, ErrorMessage = "EmailContentID")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
然后使用此 ID(“EmailContentID”)从另一个服务(例如数据库)中检索一些内容(错误消息)。然后向用户显示错误错误消息而不是 ID。为此,我需要设置 DataAnnotation 验证属性的 ErrorMessage 属性。
只需覆盖 DataAnnotationsModelValidatorProvider 的受保护覆盖 IEnumerable GetValidators(ModelMetadata metadata, ControllerContext context, IEnumerable attributes) 似乎是一项简单的任务
不过现在很复杂......
A. MVC DataannotationsModelValidator 的 ErrorMessage 属性是只读的。所以我不能在这里设置任何东西 B. System.ComponentModel.DataAnnotationErrorMessage 属性(获取和设置)已经在 MVC DatannotationsModelValidator 中设置,所以我不能再次设置它。如果我尝试设置它,我会收到“该属性不能设置超过一次……”错误消息。
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 ;
}
//......
}
}
谁能给我正确的方向?
提前致谢。