2016-03-22 11 views
0

Ich kann nicht verstehen, was mit diesem einfachen Code falsch ist.Zuweisen von Textbox-Werten zu Sitzung

Seite Last beginnt mit dem Füllen Textfelder mit Sitzungsdaten,

tbgiris.Text = Convert.ToString(Session["giris"]); 
    tbmail.Text = Convert.ToString(Session["mail"]); 
    tbisim.Text = Convert.ToString(Session["isim"]); 
    tbgrup.Text = Convert.ToString(Session["grup"]); 
    tbkimlik.Text = Convert.ToString(Session["kimlik"]); 
    tbadmin.Text = Convert.ToString(Session["admin"]); 

Dies funktioniert gut. Dann habe ich diese Textbox Werte manuell in Browser bearbeiten, und die Tastenfunktion aufrufen, die einfach die Sitzungswerte mit bestimmten Daten in Textfelder aktualisieren müssen, und neu schreiben Textfelder als Bestätigung,

Session["giris"] = tbgiris.Text; 
    Session["mail"] = tbmail.Text; 
    Session["isim"] = tbisim.Text; 
    Session["grup"] = tbgrup.Text; 
    Session["kimlik"] = tbkimlik.Text; 
    Session["admin"] = tbadmin.Text; 

    tbgiris.Text = Convert.ToString(Session["giris"]); 
    tbmail.Text = Convert.ToString(Session["mail"]); 
    tbisim.Text = Convert.ToString(Session["isim"]); 
    tbgrup.Text = Convert.ToString(Session["grup"]); 
    tbkimlik.Text = Convert.ToString(Session["kimlik"]); 
    tbadmin.Text = Convert.ToString(Session["admin"]); 

Dies ist, wo ich versage . Sitzungswerte bleiben gleich, werden nicht aktualisiert. Wenn ich den Sitzungswert zu einem statischen Wert in Button-Funktion, wie

Session["giris"] = "test string"; 

es funktioniert gut, aktualisiert die Sitzung und Textfeld. Aber wenn ich versuche, Werte aus Textfeldern zu erhalten, verhält sich Code so, als ob ich Texte von Textfeldern nie geändert hätte.

Vielen Dank im Voraus

Antwort

2

Code verhält sich wie ich

Sie haben nie Texte von Textfeldern geändert, aber dann es Sie verändert zurück.

Im ASP.NET WebForms Seitenlebenszyklus wird Page_Load auf einem Post-back ausgeführt vor werden Event-Handler ausgeführt. Also, was passiert ist:

  • Stellen Sie den TextBox Wert in Page_Load
  • Anzeige der Seite
  • Ändern Sie den Wert
  • Senden Sie die Seite
  • Stellen Sie den TextBox Wert in Page_Load (das ist das Problem)
  • Holen Sie sich den TextBox Wert in Ereignishandler

Um Ihre Page_Load Logik zu verhindern, auf einem Post-back von der Ausführung, würden Sie es in einem bedingten wickeln:

if (!IsPostBack) 
{ 
    // your logic here 
} 

auf diese Weise ausführen wird der Code nur dann, wenn die Seite zum ersten Mal geladen wird, so dass Sie Überschreiben Sie die aktualisierten Werte nicht bei jedem Post-Back.

0

Put dies innerhalb weil, wenn Seite Post den gleichen alten Wertes in der Sitzung zuweisen zurück zu Textfeldern das ist, warum Sie die alten Werte bekommen.

if (!IsPostBack) 
    { 
    tbgiris.Text = Convert.ToString(Session["giris"]); 
    tbmail.Text = Convert.ToString(Session["mail"]); 
    tbisim.Text = Convert.ToString(Session["isim"]); 
    tbgrup.Text = Convert.ToString(Session["grup"]); 
    tbkimlik.Text = Convert.ToString(Session["kimlik"]); 
    tbadmin.Text = Convert.ToString(Session["admin"]); 
    } 
Verwandte Themen