2009-06-11 11 views
11

Supposons que la page TestPage.aspx possède deux contrôles. Le premier contrôle est un contrôle d'adresse qui a un groupe de validation appelé "AddressGroup". Ce groupe contient plusieurs contrôles de validation qui sont colated dans le résumé de validation sur ce contrôle. Le second contrôle est un contrôle de carte de crédit et dispose d'un groupe de validation appelé "CreditCardGroup". Il a également plusieurs validateurs et un résumé pour afficher les résultats. Pour ajouter au problème, il existe des contrôles aléatoires sur la page qui ont également des validateurs qui sont liés à un troisième contrôle ValidatorSummary.Déclencher plusieurs groupes de validation avec un seul bouton?

Lorsque l'utilisateur appuie sur le bouton «Tout faire», je voudrais que la page déclenche les trois groupes de validation. Le bouton lui-même peut être lié à un groupe unique ou à un groupe sans étiquette. Il ne peut pas être lié à plusieurs groupes autant que je sache.

La solution est de ne pas extraire la validation des contrôles car cela démonterait la valeur de les avoir dans des contrôles séparés. Merci pour vos pensées.

Répondre

5

Parlez-vous côté client ou validation côté serveur? La réponse de Jamie est sur place pour le côté serveur, mais pour la validation côté client, vous aurez probablement besoin d'écrire votre propre fonction JS qui déclenchera la validation sur les trois groupes de concert.

+7

Pour JS, vous pouvez appeler Page_ClientValidate(), cela déclenchera la validation sur tous les groupes de page. – Ahmed

12

Appelez la méthode Valider pour chaque groupe de validation individuellement à l'intérieur du gestionnaire de clic du bouton:

bool isValidTest = false; 
Validate("AddressGroup"); 
isValidTest = IsValid; 
Validate("CreditCardGroup"); 
isValidTest &= IsValid; 
// etc. 
if (!isValidTest) return; 

Le problème suivant que vous pouvez rencontrer est que le contrôle ValidationSummary est lié à un seul groupe de validation. La seule façon que j'ai trouvé pour afficher tous les messages d'erreur pour plusieurs groupes (sans marcher l'arbre de contrôle) est d'utiliser plusieurs contrôles ValidationSummary. Avec les contrôles utilisateur, vous pouvez souhaiter que sa méthode Validate effectue une validation pour tous les contrôles qu'elle contient et affiche son propre résumé.

Édité pour ajouter: La variable isValidTest n'est pas nécessaire. Selon les docs:

Notez que lorsque vous appelez la méthode Valider , la propriété IsValid reflète la validité de tous les groupes validé jusqu'à présent.

2

Appel Page.Validate() sur le côté serveur, il validera toutes les validateurs ..

Questions connexes