3

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コードに入れても、デフォルト値にリセットされます...何が起こっているのだろうか。

何か助けはありますか?

4

2 に答える 2

4

応答がブラウザーに送信されると、クラス メンバー変数は存続しません。代わりに Session オブジェクトを使用してみてください。

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....
         }
    }
}
于 2009-03-27T16:34:25.553 に答える
3

マットの痛みを感じます。私は少し前に同様の質問をしました:

ページライフサイクルの詳細については、次の質問を確認してください。ASP.NETWebフォームの「ページライフサイクル」とは何ですか。

于 2009-03-27T16:29:41.103 に答える