2011-04-17 2 views
0

Dans mon cas, je voudrais ajouter dynamiquement des validateurs à mon contrôle en fonction d'une logique donnée. Pour chaque contrôle, je vérifie d'abord quelque chose dans ma base de données et si cela se passe, ce champ est nécessaire, je voudrais ajouter requiredField à ce contrôle. Je fais un itération à travers chaque contrôle et si c'est nécessaire j'ajoute l'attribut required = "true".Ajout dynamique de validateurs

J'ai ajouté ce code mais ça fait du travail je veux dire que rien ne se passe, aucune validation n'est en cours.

if(gc.Attributes["controlid"] != null) 
    { 
     RequiredFieldValidator validator = new RequiredFieldValidator(); 
     validator.ControlToValidate = gc.Attributes["controlid"]; 
     validator.ErrorMessage = gc.Attributes["errormessage"]; 
     this.Controls.Add(validator); 
    } 

Merci pour vos suggestions.

+0

Où ajoutez-vous les valideurs à la page? – DancesWithBamboo

+0

sur PageLoad, tous sont dans le updatePanel – gruber

Répondre

0

Vous devez également l'ajouter à la collection de validateurs de la page pour que la validation côté serveur puisse avoir lieu. L'ajouter juste à la collection de contrôles de page comme vous l'avez fait est ce qui est nécessaire pour obtenir la validation de JavaScript pour être rendu au navigateur.

Page.Validators.Add(validator); 
+0

ne fonctionne toujours pas – gruber

+0

Assurez-vous d'exécuter votre code ci-dessus et recréer les contrôles sur la publication? – DancesWithBamboo

+0

oui c'est à chaque fois que poastback s'en va et que l'événement page_load se déclenche – gruber

0

Ajoutez-vous votre contrôle Validator au même conteneur que le contrôle qu'il valide? Les contrôles du validateur requièrent que le contrôle cible soit dans le même conteneur INamingContainer.