2009-03-31 10 views
1

Ich habe 2 Seiten.ASP.Net Sitzung Wert nicht ändern

. # 1 Seite: Sitzung ("X") empfängt Wert von Benutzereingabe (Textbox), Weiterleitungen zu # 2 Seite.

. # 2-Seite: Zeigt den Wert der Sitzung ("X") an den Benutzer an, wenn der Benutzer den Wert ändern möchte, um zur Seite # 1 zur Bearbeitung zurückzukehren.

. # 1 Seite: Sitzung ("X") lädt in Original-Textfeld für Benutzer zu ändern. Der Wert aus dem Textfeld wird erneut in die Sitzung eingefügt ("X"). Weist auf # 2-Seite um.

. # 2 Seite: Sitzung ("X") bleibt gleich. WTF?

+0

Wie würde ich das überprüfen? – burntsugar

Antwort

0

Es ist ziemlich üblich für Leute zu vergessen, die "IsPostBack" Prüfung in ihrer Seite zu laden. Wenn Sie dies vergessen, setzen Sie möglicherweise die Textbox zurück auf den ursprünglichen Sitzungswert in der PageLoad, kurz bevor der Button-Handler aufgerufen wird. Das heißt, Sie überschreiben möglicherweise den Wert, den der Benutzer gerade nur eingegeben hat, bevor es in der Sitzung gespeichert wird. In neun von zehn Fällen, wenn ich mich so merkwürdig benehme, liegt es daran, dass ich vergessen habe, das IsPostBack zu überprüfen !!

+0

Dies ist kein Postback-Szenario, da zwei Seiten miteinander gepostet werden. Ist es? – burntsugar

+0

Es ist selten, dass ASP.NET verwendet wird, um einen * echten * Cross-Page-Postback zu machen (es erfordert spezielle Verarbeitung, die die meisten Leute nicht einmal zu tun wissen). In ASP.NET gibt es fast immer den Fall, dass der Button-Handler zurück zur Quellseite sendet und * dann * die Quellseite zur zweiten Seite weiterleitet. –

1

Über Session-Variablen und Umleitung gibt es einen guten Beitrag dazu:

prüfen this post aus.

"leite keine Session-Variablen nach der Einstellung (oder machen Sie es richtig)"

0

Sieht aus wie Sie Ihre # 1 Seite gewickelt Havnt. Sitzung ("X") lädt in Original-Textfeld für den Benutzer zu ändern. in a! IsPostBack Nachdem also die Schaltfläche zum Ändern des Wertes gedrückt wurde, wird die Seite "neu geladen" und der ursprüngliche Wert wird wieder in das Textfeld geschrieben. (also seine Änderung zu sich selbst)

Versuchen Sie, die Schaltfläche zu debuggen Klicken Sie auf.