2010-09-13 7 views
3

Je vais avoir une logique de validation du mal à comprendre behing validation de DataAnnotation:ASP.NET MVC: DataAnnotation exécution de validation pour

le modèle suivant:

[AlwaysInvalid] 
public class TestModel 
{ 
    [Required] 
    public string Test { get; set; } 
} 

[AttributeUsage(AttributeTargets.Class, AllowMultiple = true, Inherited = true)] 
public class AlwaysInvalidAttribute : ValidationAttribute 
{ 
    private readonly object typeId = new object(); 

    public AlwaysInvalidAttribute() : base("Fail !") {} 

    public override object TypeId { get { return this.typeId; } } 

    public override bool IsValid(object value) 
    { 
     return false; 
    } 
} 

Le message d'erreur AlwaysInvalidAttribute s'affiche uniquement si le L'attribut requis est valide: je ne peux pas obtenir les deux messages en même temps. Quelqu'un a une idée pourquoi? Je pense que c'est un problème avec DefaultModelBinder, mais je n'ai toujours pas trouvé où, ou pourquoi.

Répondre

4

Les validateurs de niveau classe s'exécutent uniquement si tous les validateurs au niveau de la propriété ont réussi. Ce comportement est codé dans la classe ModelValidator.

Questions connexes