Web Form 事件順序
下圖為 Page Event 的執行的先後順序
若你要在程式碼中建立控制項,你必須了解 LoadViewState 這件事情發生的順序,以免發生資料載入錯誤的情況。
- LoadViewState 的動作是介於 Page_Init 事件之後及 Page_Load 事件之前,所以在 LoadViewState 之前就要把控制項建立完成,才有辨法由 ViewState 中載入最新的屬性值。
- 因此,應該要在 Page_Init 事件中把控制項建立完成,若你在這個階段讀取控制項的屬性值都會是初始值,也就是設計階段時,在屬性視窗中設定的值。
- PageLoad 事件是在 LoadViewState 動作之後才觸發,所以在 PageLoad 事件中讀到的控制項屬性值才會是最新的值。
下面這三張圖,分別是初始載入畫面,以及並按了2次 Button 按鈕後的顯示頁面。
- 圖一:程式初始載入。
各個階段讀到的 TextBox1 值都是 A 。 - 圖二:將 TextBox1 改成 B ,並按下 Button 。
TextBox1 的內容,被記錄在 ViewStatus 中,postback 回去後,ViewState 的值會在 Page_Load 之前載入完畢,所以在 Page_Load 階段讀到 TextBox1 的值才會是 B。 - 圖三:再按下 Button 。
上次沒有變更 TextBox1 內容,所以少了 TextBox1_TextChange 事件。 不過,這個 B 值還是記錄在 ViewState 中的
沒有留言:
張貼留言