ASP.NET 頁面生命週期事件繁多、順序易混淆。本文提供一個簡單口訣 **SILVER**,配合各階段關鍵任務整理,助你永遠記得住。
官方定義 7 階段(略去 Page Request):
**「SILVER」= 銀,寓意生命週期如銀般清晰閃亮,易於記憶。」**
Request、Response、IsPostBack、UICulture 等頁面屬性。PreInit:建立動態控件、設定 Master Page/Theme、讀寫 Profile。Init → InitComplete → PreLoad。Init:控件初始化完成、Skin 套用後,適合讀取控件初始值。InitComplete:Page 觸發,所有初始化完成後執行一次性工作。PreLoad:Load 前最後機會,Page 即將載入 ViewState 與 PostBack 資料。Page_Load:最常用,控件值已還原,執行主要商業邏輯。IsPostBack 為 true,避免重複查詢資料庫。Load。Validate(),設定 IsValid 屬性。OnValidate 自訂驗證邏輯。Button_Click、DropDownList_SelectedIndexChanged 等。RenderControl 產生 HTML,寫入 Response.Output。Render 自訂輸出邏輯。Response 輸出內容。| 口訣 | 階段 | 關鍵事件 | 核心任務 |
|---|---|---|---|
| S | Start | PreInit | 動態控件、Master/Theme、Profile |
| I | Initialize | Init, InitComplete, PreLoad | 控件樹建立、ID 指派、Theme 套用 |
| L | Load | Load | ViewState 還原、主要邏輯、資料繫結 |
| V | Validate | Validate | 驗證控件執行、IsValid 判斷 |
| E | Event Handling | Click, Changed 等 | PostBack 事件處理、資料異動 |
| R | Render | Render, RenderControl | HTML 產生、輸出串流 |
| U | Unload | Unload | 資源釋放、清理 |
Load 或 PreRender,避免重複查詢。!Page.IsValid) 不執行事件處理邏輯。掌握 SILVER,頁面生命週期不再是背誦負擔,而是設計優雅 Web 應用的堅實基石。