2011-08-03 3 views
0

Je génère deux listes déroulantes et un contrôle CheckBoxList à l'exécution en utilisant les rappels AJAX vers un service Web (fichier .asmx). Le service crée les deux Dropdowns et CheckBoxList sur le serveur et renvoie le fichier html rendu sous la forme d'une chaîne qui est injectée dans la page Web lors de l'exécution, à l'aide des fonctions javascript.ASP.NET Accès aux contrôles créés par AJAX sur postBack

Au cours de postBack, je veux obtenir les valeurs des deux listes déroulantes et également déterminer lesquelles (le cas échéant) des cases ont été cochées. Ai-je raison de penser que le code HTML injecté dans la page lors de l'exécution n'est pas renvoyé au serveur lors de la publication? Si tel est le cas, quelle serait la manière la plus sensée d'obtenir mes valeurs?

Je pense que la meilleure façon d'obtenir les valeurs des contrôles dynamiques sera d'utiliser javascript pour lire les valeurs et les écrire dans un champ caché qui fait partie de la classe page, juste avant la publication.

S'il y a une meilleure façon de le faire alors s'il vous plaît partager!

+0

Les trois façons courantes que je peux penser sont; 1 Postback formulaire entier avec AJAX, 2 Utilisez la collection Request.Form pour obtenir la valeur actuelle (ne fonctionnera pas pour tous les contrôles, fonctionnera pour la plupart des contrôles avec une propriété de texte), 3 Stocker les données dans un champ de saisie masqué et/ou biscuit. – Zachary

Répondre

1

Une méthode de récupérer vos valeurs au cours d'une postback est en enregistrant des valeurs dans un champ caché qui, comme le nom de l'élément Suggest est invisible sur la page -

<asp:HiddenField id="countrySelected" value="" />

Dans votre javascript avant que le poste arrière vous peut remplir vos informations nécessaires -

document.getElementById('countrySelected').value = 'USA';

Dans votre behind, vous pouvez alors sélectionner la valeur à utiliser -

countrySelected.value

1

Depuis le webservice crée le code html qui est ensuite injecté dans la page, ils ne sont pas des contrôles serveur et, par conséquent, le serveur n'a aucun moyen de savoir qu'ils existent. L'élément html caché me semble le chemin à suivre dans cette affaire.

Questions connexes