Ma tâche consiste à modifier la propriété ErrorMessage de l'attribut de validation DataAnnotation dans MVC2.0. Par exemple je devrais pouvoir passer un ID au lieu du message d'erreur réel pour la propriété Model et utiliser cet ID pour récupérer du contenu (message d'erreur) d'un autre service par exemple base de données et afficher ce message d'erreur dans la vue au lieu du ID. Pour ce faire, j'ai besoin de définir la propriété ErrorMessage de l'attribut de validation DataAnnotation.Comment faire pour modifier la propriété ErrorMessage de la validation DataAnnotation dans MVC2.0
[StringLength(2, ErrorMessage = "EmailContentID.")]
[DataType(DataType.EmailAddress)]
public string Email { get; set; }
Il semble être une tâche facile en tout remplaçant protected override du DataAnnotationsModelValidatorProvider IEnumerable getValidators (métadonnées ModelMetadata, contexte ControllerContext, les attributs IEnumerable)
Cependant, il semble être assez compliqué.
a. La propriété ErrorMessage de MVC DatannotationsModelValidator est en lecture seule. Donc, je ne peux rien définir ici b. La propriété System.ComponentModel.DataAnnotationErrorMessage (get et set) qui est déjà définie dans MVC DatannotationsModelValidator, donc nous ne pouvons pas définir à nouveau. Si vous essayez de définir vous obtenez "La propriété ne peut pas définir plus d'une fois ..." message d'erreur apparaît.
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 ;
}
//......
}
}
Quelqu'un peut-il m'aider s'il vous plaît à ce sujet?