首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> ASP.NET 基礎

ASP.NET 網頁生命週期事件執行順序完整圖解

     編輯:ASP.NET 基礎

頁面載入階段(初次請求與回發共通)

  1. PreInit:建立動態控制項、設定 Master Page/Theme、檢查 IsPostBack。
  2. Init:初始化控制項屬性、讀取 ViewState(尚未載入)、Init 事件觸發。
  3. InitComplete:所有控制項初始化完成,ViewState 追蹤開啟。
  4. PreLoad:載入 ViewState 與 ControlState,處理跨頁面回發。
  5. Load(Page_Load):主要業務邏輯進入點,控制項樹已完整建立。
  6. LoadComplete:所有控制項 Load 完成,適合需所有子控制項就緒後的操作。

回發專屬階段

  1. 控制項事件:Button_Click、TextChanged 等。注意:先驗證 Page.IsValid 再處理業務。

渲染前準備階段

  1. PreRender:最後修改頁面/控制項內容的機會。
    • EnsureChildControls 已呼叫
    • DataSourceID 綁定控制項自動 DataBind()
    • 所有控制項觸發 PreRender 事件
  2. SaveStateComplete:ViewState/ControlState 已序列化完成,此後修改不會持久化。

渲染與卸載階段

  1. Render:非事件,而是 Page 呼叫每個控制項 Render(HtmlTextWriter) 輸出 HTML。自訂控制項覆寫此方法輸出標記。
  2. Unload:由內而外(控制項 → 頁面)執行清理:關閉資料庫連線、釋放檔案控制代碼、完成日誌記錄。不可再操作 Response 輸出流,否則拋出例外。

回發時完整順序摘要

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自訂控制項輸出 HTMLUserControl (.ascx) 自動渲染,勿手動呼叫
Unload釋放非受控資源嚴禁 Response.Write、Server.Transfer

進階:非同步頁面生命週期

ASP.NET 4.5+ 支援 PageAsyncTask 與 async/await,在 PreRender 前執行非同步作業,不阻塞執行緒池,提升併發擴展性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved