我的任務是更改MVC2.0中DataAnnotation驗證屬性的ErrorMessage屬性。例如,我應該能夠傳遞一個ID而不是Model屬性的實際錯誤消息,並使用該ID從另一個服務(例如數據庫)檢索某些內容(錯誤消息),並在View中顯示該錯誤消息,而不是ID。爲了做到這一點,我需要設置DataAnnotation驗證屬性的ErrorMessage屬性。如何更改MVC2.0中DataAnnotation驗證的ErrorMessage屬性
[StringLength(2, ErrorMessage = "EmailContentID.")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
好像被剛剛重寫DataAnnotationsModelValidatorProvider的 保護覆蓋的IEnumerable GetValidators(ModelMetadata元,ControllerContext背景下,IEnumerable的屬性)
但是它似乎是夠複雜的一件容易的事。
a。 MVC DatannotationsModelValidator的ErrorMessage屬性是隻讀的。所以我不能在這裏設置任何東西 b。已經在MVC DatannotationsModelValidator中設置的System.ComponentModel.DataAnnotationErrorMessage屬性(get和set),所以我們不能再次設置。如果您嘗試設置您收到「屬性不能設置多次...」錯誤信息出現。
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 ;
}
//......
}
}
任何人都可以請幫助我嗎?