2010-10-05 3 views
0

Je suivants ViewModel:MVC validateurs fortement typées Vues

public IEnumerable<SelectListItem> SelectAdminsInGroup { get; set; } 
    public IEnumerable<SelectListItem> SelectAdminsNotInGroup { get; set; } 
    public model.Admin Admin { get; set; } 

classe Admin:

[PropertiesMustMatchAttribute ("Mot de passe", "ConfirmPassword")] public class Administrateur { Administration publique() { this.PasswordDate = DateTime.Now; this.Username = string.Empty; }

public virtual int AdminId { get; set; } 

    [Required(ErrorMessage = "Field 'Username' is required"), StringLength(20, ErrorMessage = "Field 'Username' must be less than 20 characters long")] 
    public virtual string Username { get; set; } 
    public virtual string Oldusername { get; set; } 

    [ValidatePasswordLength()] 
    public virtual string Password { get; set; } 
    public virtual string ConfirmPassword { get; set; } 


    public virtual ICollection<AdminGroup> AdminGroup { get; set; } 
} 

affiche maintenant pour une raison PropertiesMustMatch jamais le message d'erreur dans le résumé de la validation. J'ai également remarqué que l'une des clés ModelState contient "Admin" pour "PropertiesMustMatchAttribute" et il devrait être vide car ce serait le message d'erreur de classe/résumé. Comment puis-je valider mon modèle personnalisé? thanks

Répondre

2

Les validateurs au niveau du type (par exemple, PropertiesMustMatchAttribute) s'exécutent uniquement si tous les validateurs au niveau de la propriété ont réussi. Si le validateur au niveau de la propriété échoue, le validateur au niveau du type ne sera pas exécuté. Échec de la vérification "ValidatePasswordLength"?

+0

Il n'échoue pas, mais il n'est pas affiché. Lorsque je débogue, je vois qu'il est inséré dans la liste d'erreurs ModelState mais parce que im utilisant ModelView (qui contient la classe Admin et autres) la clé pour cette erreur n'est pas (vide) "" mais a "Admin" dedans donc ce n'est pas affiché dans le résumé des erreurs. – ShaneKm

Questions connexes