2009-03-27 10 views
3
私はポストバックの初期化のサイクルの後ASP.NETでページを書いていると問題があります

:私が持っているAsp.net「グローバル」変数

(に似て何か)以下:

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

そして、私のコードでは「passedString」を正しく受け取りますが、何らかの理由でポストバック時にデフォルト値にリセットされます.PAGE_INITコードにデフォルトの割り当てを入れても...どのようなことが起こっているのだろうか?

何か助けてください?

+0

渡された文字列はフォーム値かクエリー文字列ですか? –

答えて

4

あなたのクラスのメンバ変数は、上に住んでいない:この質問をチェックアウトページのライフサイクルのさらなる理解のために

:私は少し前同様の質問をしました。代わりにセッションオブジェクトを使用してみてください:

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

ありがとう、これは働いた! – matthewdunnam

+0

"私たちのクラスメンバー変数は、応答がブラウザに送られた後には生きていません。"別の言い方をすると、それぞれのポストバックはあなたのページクラスの新しいインスタンスで動作しています。 –

3

私はあなたの痛みを感じます。応答がブラウザに送信されるとWhat is the 'page lifecycle' of an ASP.NET WebForm?

+0

これは私が探していたものではありませんでしたが、非常に有用な情報でした。ありがとう! – matthewdunnam

+0

うれしい私は助けになることができました(私は受け入れられた答えを得なくても!) –