2008-09-26 6 views
2

J'ai une page Web ASP.NET 2.0 avec 2 UserControls (.ascx). Chaque UserControl contient un groupe de validateurs. Placer un ValidationSummary sur la page affichera toutes les erreurs de validation des deux UserControl. Placer un ValidationSummary dans chaque UserControl affichera toutes les erreurs des deux contrôles deux fois.Comment puis-je définir le ValidationGroup dynamiquement?

Ce que je veux est un ValidationSummary pour chaque UserControl, affichant seulement les erreurs sur ce UserControl.

J'ai essayé de résoudre ce problème en définissant la propriété ValidationGroup des validateurs sur chaque contrôle dynamique d'usercontrol. De cette façon, chaque récapitulatif de validation doit afficher uniquement les erreurs de son UserControl. Je l'ai utilisé ce code:

foreach (Control ctrl in this.Controls) 
{ 
    if (ctrl is BaseValidator) 
    { 
     (ctrl as BaseValidator).ValidationGroup = this.ClientID; 
    } 
} 
ValidationSummary1.ValidationGroup = this.ClientID; 

Cela semble toutefois désactiver à la fois la validation côté serveur et côté client, car aucune validation se produit lors de la soumission du formulaire.

Aide?

Répondre

2

Si vous utilisez ValidationGroups, la validation se produit uniquement si le contrôle à l'origine de la publication est affecté au même groupe ValidationGroup.

Si vous souhaitez utiliser un seul contrôle pour la publication, vous pouvez toujours le faire, mais vous devrez appeler explicitement la méthode Page.Validate.

Page.Validate(MyValidationGroup1); 
Page.Validate(MyValidationGroup2); 
if(Page.IsValid) 
{ 
    //do stuff 
} 

Suggestion: Pourquoi ne pas exposer une propriété publique sur vos contrôles utilisateur appelé ValidationGroup? Dans le setter, vous pouvez définir explicitement le groupe de validation pour chaque validateur. Vous pouvez également utiliser votre boucle, mais il serait plus efficace de définir chaque validateur explicitement. Cela pourrait améliorer la lisibilité du code en utilisant les contrôles utilisateur.

4

Le contrôle à l'origine de votre soumission de formulaire (c'est-à-dire un contrôle Button) doit faire partie du même groupe de validation que les contrôles ValidationSummary et * Validator.

Questions connexes