搞懂 Page 生命週期是 ASP.NET 開發基石。HTTP 無狀態特性導致許多初學者在動態載入控制項時遭遇「回發丟值/丟狀態」問題。本文詳細梳理事件順序,含母版頁引入後的複雜性。
ASP.NET 2.0 引入 partial class,.aspx 標記編譯為設計時類別(.designer.cs),自動聲明控制項變數與事件繫結,代碼後置檔案極度精簡,消除 VS2003 時代控制項 ID 變更需同步修改兩檔的痛苦。
PreInit:動態設定 MasterPage/Theme、建立動態控制項的最佳時機。Init:控制項初始化,Init 事件由內而外觸發。InitComplete:追蹤 ViewState 開啟點。PreLoad:載入前準備。Load:Page_Load,控制項樹已建立,ViewState 已還原。Control Events:按鈕點擊等回發事件。LoadComplete:所有控制項載入完成。PreRender:最後修改 UI 的機會,資料繫結常在這裡。SaveStateComplete:ViewState/ControlState 已序列化。Render:輸出 HTML。Unload:清理資源。PreInit 或 Init 建立並加入控制項樹,確保 ViewState 正常追蹤。ViewState、ControlState、Session、Cache、Cookie。參考 MSDN:ViewState 與 ControlState 詳細說明