MVC 2.0 で DataAnnotation の検証属性の ErrorMessage プロパティを設定する必要があります。たとえば、モデル プロパティの実際のエラー メッセージの代わりに ID を渡すことができるはずです。
[StringLength(2, ErrorMessage = "EmailContentID")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
次に、この ID ("EmailContentID") を使用して、データベースなどの別のサービスからコンテンツ (エラー メッセージ) を取得します。次に、ID の代わりにエラー エラー メッセージがユーザーに表示されます。これを行うには、DataAnnotation 検証属性の ErrorMessage プロパティを設定する必要があります。
DataAnnotationsModelValidatorProvider の保護されたオーバーライド IEnumerable GetValidators(ModelMetadata メタデータ、ControllerContext コンテキスト、IEnumerable 属性) をオーバーライドするだけで、簡単な作業のように思えます。
しかし、今は複雑です....
A. MVC DatannotationsModelValidator の 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 ;
}
//......
}
}
誰でもこれについて正しい方向性を教えてもらえますか?
前もって感謝します。