2009-03-31 11 views
1

J'ai 2 pages.La valeur de session ASP.Net ne change pas

. # 1 page: session ("X") reçoit la valeur de l'entrée de l'utilisateur (zone de texte), redirige vers la page # 2.

. # 2 page: affiche la valeur de session ("X") à l'utilisateur, si l'utilisateur veut changer la valeur, redirige vers la page # 1 pour l'édition.

. # 1 page: session ("X") se charge dans la zone de texte originale pour que l'utilisateur change. La valeur de textbox est à nouveau placée dans la session ("X"). Redirige vers la page # 2.

. # 2 page: la session ("X") reste la même. WTF?

+0

Comment vérifier cela? – burntsugar

Répondre

0

Il est assez fréquent que les gens oublient de faire la vérification "IsPostBack" dans leur chargement de page. Si vous oubliez, vous pouvez définir la zone de texte en arrière à la valeur de session d'origine dans le PageLoad juste avant l'appel du gestionnaire Button. Autrement dit, vous risquez d'écraser la valeur que l'utilisateur vient d'entrer juste avant de le stocker dans la session. Neuf fois sur dix quand j'ai un comportement bizarre comme celui-ci c'est parce que j'ai oublié de vérifier le IsPostBack !!

+0

Il ne s'agit pas d'un scénario de publication car il y a 2 pages d'écriture l'une par rapport à l'autre. Est-ce? – burntsugar

+0

Il est rare qu'ASP.NET soit utilisé pour faire un * vrai * cross-page postback (il faut un traitement spécial que la plupart des gens ne savent même pas faire). Dans ASP.NET, il est presque toujours le cas que le gestionnaire de bouton renvoie à la page source et * puis * la page source redirige vers la deuxième page. –

1

A propos variable de session et de rediriger, il y a un bon poste à ce sujet:

Check this post out.

"Ne pas redirigent après avoir réglé une variable de session (ou le faire à droite)"

0

On dirait que vous havnt enveloppé votre # 1 page:. Session ("X") des charges en zone de texte originale pour l'utilisateur à changer. dans un! IsPostBack Donc, après avoir cliqué sur le bouton pour changer la valeur, la page est "rechargée" et la valeur d'origine est remise dans la zone de texte. (donc changer pour lui-même)

Essayez de déboguer le bouton Cliquez sur.

Questions connexes