2009-03-27 9 views
3

J'écris une page ASP.NET et je avoir des problèmes après le cycle d'initialisation sur postbacks:Asp.net variables « globales »

Je (quelque chose de semblable) ce qui suit:

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.... 
     } 
    } 
} 

Et ce qui se passe, c'est que mon code récupère le "passedString" très bien, mais pour une raison quelconque, en postback, il se réinitialise à la valeur par défaut - même si je mets l'affectation par défaut dans le code Page_Init ... ce qui me fait me demander ce qui se passe ..

Une aide?

+0

Est passé Chaîne une valeur de formulaire ou une chaîne de requête? –

Répondre

4

vos variables membres de classe ne vivent pas une fois que la réponse est envoyée au navigateur. Essayez d'utiliser l'objet Session à la place:

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

Merci, cela a fonctionné! – matthewdunnam

+0

"nos variables de membre de classe ne vivent pas une fois la réponse est envoyée au navigateur." Autrement dit: chaque publication fonctionne avec une nouvelle instance de votre classe de page. –

3

Je sens ta douleur Matt. J'ai posé une question similaire il y a quelque temps:

Pour une meilleure compréhension de la page du cycle de vie vérifier cette question: What is the 'page lifecycle' of an ASP.NET WebForm?

+0

Ce n'était pas exactement ce que je cherchais, mais c'était une information très utile. Merci! – matthewdunnam

+0

Heureux que je puisse être utile (même si je ne reçois pas la réponse acceptée!) –