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

ASP.NET 頁面生命週期:Page_Load 與 Page_Init 執行順序完整圖解

     編輯:關於ASP.NET

ASP.NET 頁面從請求到回應經歷嚴格的生命週期階段,理解各事件觸發順序與 ViewState 載入時機,是撰寫正確邏輯、避免常見 Bug 的關鍵。

ASP.NET 2.0 完整生命週期

  1. PreInit:初始化 Theme、套用 MasterPage、建立動態控件的最佳時機
  2. Init:控件初始化,Init 事件由內而外觸發(子控件先於父控件)
  3. InitComplete:初始化完成
  4. PreLoad:ViewState 載入前
  5. Load:Page_Load 觸發,ViewState 已可用,PostBack 時控件狀態已還原
  6. 控件事件:PostBack 時觸發 Button Click、SelectedIndexChanged 等
  7. LoadComplete:所有控件 Load 完成
  8. PreRender:渲染前最後修改機會
  9. PreRenderComplete
  10. SaveStateComplete:ViewState 儲存完成
  11. Render:輸出 HTML
  12. Unload:清理資源

關鍵時機點對照表

需求最佳階段原因
動態建立控件PreInit / Init確保參與 ViewState 追蹤
讀取/修改 ViewStateLoad 之後LoadViewState 在 Load 前完成
資料繫結Load / PreRenderLoad 適合首次繫結,PreRender 適合修改後重繫
修改輸出 HTMLPreRender / RenderRender 階段直接操作 HtmlTextWriter
釋放非託管資源Unload / Dispose頁面銷毀前最後機會

AutoEventWireup 機制

<%@ Page AutoEventWireup="true" %>  <!-- 預設開啟 -->
  • 開啟時:自動繫結 Page_Load、Page_Init 等標準命名方法
  • 關閉時:需在建構式手動 this.Load += Page_Load; 註冊,效能略佳
  • 僅適用 Page 類別,UserControl 需手動繫結

常見錯誤與修正

  • 在 Page_Load 動態新增控件:PostBack 時控件不會重建 → 移至 PreInit 或 Init
  • 在 Init 存取 ViewState:尚未載入 → 移至 Load 或之後
  • PreRender 修改資料未重新繫結:需在 PreRender 中呼叫 DataBind()
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved