ASP.NET 頁面為控件樹結構(Composite Pattern),每個控件生命週期包含實例化、初始化、ViewState 追蹤、載入 ViewState、載入 PostBack 資料、Load、PreRender、Render、Unload 等階段。
| 階段 | 方法/事件 | 說明 | 開發者介入 |
|---|---|---|---|
| 實例化 | 建構式 | 建立控件實例 | 極少覆寫 |
| 初始化 | OnInit / Init | 建立子控件、設定基礎屬性 | 動態建立子控件的最佳時機 |
| ViewState 追蹤 | TrackViewState | 開始記錄屬性變更 | 一般不覆寫 |
| 載入 ViewState | LoadViewState | PostBack 時還原狀態 | 自訂 ViewState 儲存時覆寫 |
| 載入 PostBack 資料 | LoadPostData | IPostBackDataHandler 介面 | 輸入類控件必須實作 |
| Load | OnLoad / Load | 資料繫結、業務邏輯 | 最常用階段 |
| PreRender | OnPreRender / PreRender | 渲染前最後修改 | 調整輸出前狀態 |
| Render | Render | 輸出 HTML | 核心覆寫點 |
| Unload | OnUnload / Unload | 釋放資源 | 清理非託管資源 |
Control(非視覺)、WebControl(視覺)、CompositeControl(複合)Render 輸出 HTMLvirtual、ViewState 支援)IPostBackDataHandler / IPostBackEventHandler(需互動)
ToolboxData、DefaultProperty、ParseChildrenIIS 接收請求 → 建立 AppDomain → 首次編譯 .aspx 為類別 → 實例化頁面 → 遞迴建立控件樹 → 執行生命週期 → Render 輸出 HTML → 回應用戶端。