Default.aspx 放一個 Button,訂閱 Init、Load、PreRender、Unload 並在各處打中斷點。Global.asax 打中斷點於 Application_Start、Session_Start、Application_End、Session_End。Site.Master 的 Page_Load 打中斷點。1. Application_Start (IIS 啟動網站,僅一次) 2. Session_Start (新 Session 建立) 3. Button1_Init (所有控件 Init,遞歸由外而內) 4. Page_Load (Default.aspx) (內容頁面 Load) 5. Page_Load (Site.Master) (母版頁面 Load) 6. Button1_Load (控件 Load) 7. Button1_PreRender (控件 PreRender) 8. Button1_Unload (控件 Unload) 9. Render 階段輸出 HTML (介面呈現) ... 關閉 IIS 時: 10. Session_End (Session 逾時或放棄) 11. Application_End (應用程式關閉)
| 階段 | 典型事件 | 主要用途 |
|---|---|---|
| 初始化 | Init, InitComplete | 建立控件樹、設定靜態屬性、動態加入控件、ViewState 尚未回復。 |
| 載入 | Load, LoadComplete | ViewState/ControlState 已回復,可存取表單資料、資料繫結、業務邏輯。 |
| 預渲染 | PreRender, PreRenderComplete | 最後修改輸出內容的機會(如資料重繫、權限控制顯隱),ViewState 即將序列化。 |
| 釋放 | Unload | 釋放非受控資源(檔案控制代碼、資料庫連線、大型物件),不可再存取 Response。 |
Page_InitPage_InitPage_LoadPage_LoadLoad...母版頁 Load 晚於內容頁,因此內容頁 Load 中若需存取母版頁控件,請改用 Page.LoadComplete 或母版頁公開屬性/方法。
Load 或 LoadComplete,避免在 Init 讀取 ViewState 前的值。DataTable、串流)在 Unload 或 Dispose 釋放。Init 階段重建,否則 ViewState 無法對應。PreRender 後修改控件集合,否則 ViewState 序列化會出錯。