2009-03-27 8 views
3

ich eine Seite in ASP.NET zu schreiben und Probleme habe nach dem Zyklus der Initialisierung auf Postbacks:Asp.net „Global“ Variablen

Ich habe (so etwas wie) die folgenden:

public partial class MyClass : System.Web.UI.Page 
{ 
    String myString = "default"; 

    protected void Page_Init(object o, EventArgs e) 
    { 
     myString = Request["passedString"]; 
     //note that I've tried to set the default here in Init on NULL... 
    } 

    protected void Page_Load(object o, EventArgs e) 
    { 
     if(!Postback) 
     { 
      //code that uses myString.... 
     } 
     else 
     { 
      //more code that uses myString.... 
     } 
    } 
} 

Und was passiert ist, dass mein Code die "passedString" gerade gut, aber aus irgendeinem Grund, auf Postback setzt es auf den Standardwert zurück - auch wenn ich die Zuweisung des Standards in den Page_Init-Code ... was mich wundern lässt, was los ist.

Irgendwelche Hilfe?

+0

Ist passedString ein Formularwert oder Querystring? –

Antwort

4

Ihre Klasse Membervariablen leben nicht einmal die Antwort an den Browser gesendet wird. Versuchen Sie stattdessen, das Session-Objekt zu verwenden:

public partial class MyClass : System.Web.UI.Page 
{  

    protected void Page_Init(object o, EventArgs e) 
    { 
     Session["myString"] = Request["passedString"]; 
     //note that I've tried to set the default here in Init on NULL... 
    } 

    protected void Page_Load(object o, EventArgs e) 
    { 
     string myString = (string) Session["myString"]; 

     if(!Postback) 
     { 
      // use myString retrieved from session here 
     } 
     else 
     { 
      //more code that uses myString.... 
     } 
    } 
} 
+0

Danke, das hat funktioniert! – matthewdunnam

+0

"unsere Klassenmitgliedsvariablen sind nicht aktiv, sobald die Antwort an den Browser gesendet wurde." Anders ausgedrückt: Jeder Postback arbeitet mit einer neuen Instanz Ihrer Seitenklasse. –

3

Ich fühle deinen Schmerz Matt. Ich fragte eine ähnliche Frage vor einer Weile:

Für ein weiteres Verständnis des Lebenszyklus der Seite diese Frage finden Sie unter: What is the 'page lifecycle' of an ASP.NET WebForm?

+0

Dies war nicht genau das, was ich suchte, aber es war sehr nützliche Informationen. Vielen Dank! – matthewdunnam

+0

Ich bin froh, dass ich Ihnen behilflich sein könnte (auch wenn ich die angenommene Antwort nicht bekomme!) –

Verwandte Themen