La validation d'un ASP.NET de contrôle de l'utilisateur à partir de la page parent
J'ai un asp.net page avec un bouton. Ce bouton génère et insère un contrôle utilisateur dans la page, de sorte que de nombreux contrôles pourraient exister sur une page. J'ai besoin de valider un certain généré dynamiquement de contrôle à l'intérieur de l'généré de contrôle existe.
Donc..Page contient de 0 à N Control1. Chaque Contrôle 1 peut avoir de 0 à N Control2. Lorsque SaveButton est cliqué sur la Page, j'ai besoin d'assurer qu'il y a au moins 1 Control2 est à l'intérieur de chaque Control1.
Je suis actuellement entre deux options:
• Insérer dynamiquement CustomValidators pour chaque contrôle qui est généré, chaque de ce qui permettrait de valider un Control1.
• Effectuer la validation manuellement (avec jQuery), l'appel d'une fonction de validation de SaveButton.OnClientClick.
Les deux sont bâclée à leur manière – et c'est pourquoi je partage avec vous tous. Ai-je raté la solution de facilité?
Merci d'avance.. (btw – jusqu'à et y compris .NET 3.5 SP1 est un jeu équitable)
OriginalL'auteur JoeB | 2008-11-01
Vous devez vous connecter pour publier un commentaire.
Hmm j'aime l'Interface idée suggérée par digiguru mais je voudrais utiliser l'interface sur le conteneur Control1 au lieu de la sous contrôles, car il semble que l'emplacement le plus logique pour le code de vivre. Heres mon prendre sur elle:
mettre en œuvre cette sur votre Control1
Il y a probablement de meilleures façons d'écrire cela, mais il devrait vous donner assez d'une idée pour commencer.
Content d'avoir pu aider
Vous devez utiliser le IValidator interface ASP.Net il fournit IsValid, de Valider et de ErrorMessage. Votre valideur doit mettre en œuvre, et dans votre Init déclencheur, vous devez appeler la Page.Les validateurs.Ajouter(cet).
OriginalL'auteur SecretDeveloper
Si vous ajoutez des contrôles utilisateur à la volée, vous pouvez le faire chaque contrôle implémenter la même interface avec une Valider la fonction. De cette façon, vous pouvez charger les commandes dans un espace réservé à chaque parent de contrôle sur la page. Quand la page est soumise, il suffit de faire une boucle par les contrôles dans l'espace réservé, exprimés à l'interface de la classe et puis l'appel de la validation de la fonction. Je ne pas utiliser les validateurs personnalisés, mais vous pouvez créer une liste des erreurs de validation à l'aide de l'objet retourné à partir de la validation de la fonction, vous pouvez rendre cette collection d'erreurs de validation de n'importe quelle manière que vous aimez.
OriginalL'auteur digiguru
Je pense que vous pourriez le faire par l'attribution d'une propriété publique dans Control1 qui fait référence à l'existence de Control2 de l'ID, puis décorer Control1 classe avec ValidationProperty. Je suis en train de penser à quelque chose le long de ces lignes:
Et puis, vous devriez être en mesure de pointer un RequiredFieldValidator à une instance de Control1.
OriginalL'auteur Kelly Adams
Une méthode que vous pourriez essayer est la création et le maintien d'une simple structure xml qui représente votre contrôle personnalisé de la hiérarchie. Insérer ou supprimer à partir de cette structure tout moment de créer ou de détruire une coutume de contrôle de l'utilisateur. Sur enregistrer, valider le fait que le contrôle de la hiérarchie représentée dans la structure xml est correct. Vous pourriez enregistrer le xml dans l'objet Session pour persister à travers les publications.
OriginalL'auteur tbreffni