IsPostBack。Init 事件觸發。Page_Load):主要業務邏輯進入點,控制項樹已完整建立。Button_Click、TextChanged 等。注意:先驗證 Page.IsValid 再處理業務。EnsureChildControls 已呼叫DataSourceID 綁定控制項自動 DataBind()PreRender 事件Page 呼叫每個控制項 Render(HtmlTextWriter) 輸出 HTML。自訂控制項覆寫此方法輸出標記。1. OnPreInit 2. OnInit 3. OnInitComplete 4. OnPreLoad 5. Page_Load 6. OnLoad 7. Button_Click (控制項事件) 8. OnLoadComplete 9. OnPreRender 10. SaveStateComplete 11. Render 12. OnUnload
| 階段 | 常見用途 | 避坑指南 |
|---|---|---|
| PreInit | 動態建立控制項、切換 Master Page | 勿存取尚未建立的控制項屬性 |
| Load | 資料查詢、綁定、業務邏輯 | 回發時勿重複綁定(判斷 !IsPostBack) |
| 控制項事件 | 按鈕提交、下拉選單變更 | 驗證控制項必須先檢查 Page.IsValid |
| PreRender | 依據使用者權限動態顯示/隱藏控制項 | 此後修改控制項屬性不會觸發事件 |
| Render | 自訂控制項輸出 HTML | UserControl (.ascx) 自動渲染,勿手動呼叫 |
| Unload | 釋放非受控資源 | 嚴禁 Response.Write、Server.Transfer |
ASP.NET 4.5+ 支援 PageAsyncTask 與 async/await,在 PreRender 前執行非同步作業,不阻塞執行緒池,提升併發擴展性。