2010-03-16 5 views
1

J'utilise ASP.NET (qui implémente Callbacks le ICallbackEventHandler) et dans le gestionnaire, j'essaie de définir une valeur de la zone de texte:Impossible de définir la valeur dans le gestionnaire textbox Callback en asp.net

txtName.text = "Test"; 

mais cette valeur n'est pas définie. Est-ce une limitation avec callback? Il semble que je ne peux pas faire grand-chose dans un gestionnaire de rappel autre que de renvoyer une chaîne au client (bien sûr, je peux accéder à la session, etc.)

Répondre

2

Même si vous rappelez au serveur, la page entière n'est pas traitée et renvoyé au client. Ainsi, les modifications apportées aux contrôles côté serveur ne seront pas reflétées côté client.

Contrôles comme the GridView uses callbacks pour effectuer un traitement sur le serveur sans effectuer de publication complète. Pensez-y comme une forme d'AJAX. Le GridView, à la réception de la réponse de chaîne que vous mentionnez, est responsable de l'interprétation de la chaîne et de la mise à jour de son propre côté client en utilisant javascript.

Précision: comme décrit here:

la page ... exécute une version abrégée de son cycle de vie normale au processus le rappel

donc pas, ASP.Net ne fera pas un cycle de vie de page complet, et non, aucun html ne sera retourné au client. A moins que vous ne retourniez vous-même du code html dans la méthode GetCallbackResult.

Idée: au lieu de faire callbackeventhandlers, jetez un oeil à JQuery with ASP.Net AJAX et more on the state of things here. Cela permettrait à votre scénario avec une grande partie de la plomberie déjà en place faite par Microsoft.

+0

Ma compréhension était qu'un rappel passe par le cycle de vie de la page (un point d'arrêt est atteint dans Page_Load). Cela signifie-t-il qu'il ignore la méthode Render de la page? – Nick

+0

C'est correct. Voir ma clarification. Je vois à partir de votre autre commentaire que vous voulez lier un répéteur: ce que vous pouvez faire est de retourner les données du gestionnaire de rappel, puis d'utiliser par exemple. JQuery pour créer une liste HTML côté client. –

+0

Merci. Savez-vous quelles méthodes sont ignorées lors d'un rappel? – Nick

0

Je ne l'appellerais pas une limitation, mais ce n'est pas ce à quoi ICallbackEventHandler était destiné. Vous pouvez utiliser un UpdatePanel si vous souhaitez cette fonctionnalité. Si vous voulez rester avec l'approche ICallbackEventHandler, vous pouvez simplement retourner votre chaîne de texte, puis définir le côté client d'entrée.

+0

La définition de la valeur de la zone de texte était un exemple. Je voulais lier un répéteur dans le gestionnaire de rappel. Comme Peter l'a dit, je pense que ce n'est pas possible car la page n'est pas redélivrée. – Nick

+0

Bon, ce que je dis, c'est qu'il y a plusieurs façons de faire des appels ajax depuis le client. Vous pouvez utiliser UpdatePanels, implémenter ICallbackEventHandler, utiliser webservices, PageMethods, etc. Ils sont tous légèrement différents et chacun a sa place en fonction de votre problème. –

Questions connexes