asp.Netwebライフサイクルとviewstateとloadpostdataのメモ

2255 ワード

参考文献:

Understanding ASP.NET View State https://msdn.microsoft.com/en-us/library/ms972976.aspx#viewstate_topic11
例を作成しました.
 
 public partial class _Default : Page
    {
        protected void Page_Init(object sender, EventArgs e)
        {
            this.Title = "ss";
            System.Web.UI.WebControls.TextBox TextBox3 = new TextBox();
            TextBox3.Text = "textbox3Init";
            TextBox3.ID = "textbox3Init";
            PlaceHolder1.Controls.Add(TextBox3);
            
            
        }

        protected void Page_Load(object sender, EventArgs e)
        {
            System.Web.UI.WebControls.TextBox TextBox2 = new TextBox();
            TextBox2.Text = "textbox2Init";
            TextBox2.ID = "textbox2Init";
            PlaceHolder1.Controls.Add(TextBox2);
        }

        protected void Button1_Click(object sender, EventArgs e)
        {
            foreach (Control c in PlaceHolder1.Controls)
            {
                if(c.ID == "textbox3Init")
                {
                    ((TextBox)c).Text = "button1click";
                }

                if (c.ID == "textbox2Init")
                {
                    ((TextBox)c).Text = "button1click";
                }
            }
        }

        
    }
}
  :    button2,           ,   postback  。

1.このページに初めてアクセスします.
textbox 2,textbox 3のtextはいずれも初期値である(この場合viewstateがないと理解できる)
2. click "button1";
textbox 2,textbox 3'textはbutton 1 clickを与えた.(これはエコーですviewstateが値を保存します)
3. click "button2"
これは初期化後、load state view、load post data(これはpost dataが変化していない値です).save state view, render;
3. modify textbox2 text to 'buttone1clicktest'
これは初期化で、load state view、load post data(これはpostdataがfor textbox 2に変化した)、save state view、render.
また、私の理解:viewstateはclientでは変更されず、そのままサーバに再送信されます
ここで質問ですが、私のtextbox 2は実際に(page_load)動的にロードされ、原理に従ってpageのload view stateはpage_loadは前に完了しているので、textbox 2というcontrolのview stateはloadにはあげられないはずなのに、リアルタイムでロードされているので、controlはこの流れに従うべきだと思います(彼が作成しないでください)、init、load viewstate、load post data、最後のrender