
- ASP.NET 教程
- ASP.NET - 首頁
- ASP.NET - 簡介
- ASP.NET - 環境
- ASP.NET - 生命週期
- ASP.NET - 第一個示例
- ASP.NET - 事件處理
- ASP.NET - 伺服器端
- ASP.NET - 伺服器控制元件
- ASP.NET - HTML 伺服器控制元件
- ASP.NET - 客戶端
- ASP.NET - 基本控制元件
- ASP.NET - 指令
- ASP.NET - 狀態管理
- ASP.NET - 驗證器
- ASP.NET - 資料庫訪問
- ASP.NET - ADO.net
- ASP.NET - 檔案上傳
- ASP.NET - 廣告輪播
- ASP.NET - 日曆控制元件
- ASP.NET - 多檢視
- ASP.NET - 面板控制元件
- ASP.NET - AJAX 控制元件
- ASP.NET - 資料來源
- ASP.NET - 資料繫結
- ASP.NET - 自定義控制元件
- ASP.NET - 個性化
- ASP.NET - 錯誤處理
- ASP.NET - 除錯
- ASP.NET - LINQ
- ASP.NET - 安全性
- ASP.NET - 資料快取
- ASP.NET - Web 服務
- ASP.NET - 多執行緒
- ASP.NET - 配置
- ASP.NET - 部署
- ASP.NET 資源
- ASP.NET - 快速指南
- ASP.NET - 有用資源
- ASP.NET - 討論
ASP.NET - 生命週期
ASP.NET 生命週期指定了如何
- ASP.NET 處理頁面以生成動態輸出
- 應用程式及其頁面被例項化和處理
- ASP.NET 動態編譯頁面
ASP.NET 生命週期可以分為兩組
- 應用程式生命週期
- 頁面生命週期
ASP.NET 應用程式生命週期
應用程式生命週期具有以下階段
使用者請求訪問應用程式資源(一個頁面)。瀏覽器將此請求傳送到 Web 伺服器。
統一管道接收第一個請求,併發生以下事件
建立 ApplicationManager 類的物件。
建立 HostingEnvironment 類的物件以提供有關資源的資訊。
編譯應用程式中的頂級專案。
建立響應物件。建立並初始化應用程式物件,例如 HttpContext、HttpRequest 和 HttpResponse。
建立 HttpApplication 物件的例項並將其分配給請求。
HttpApplication 類處理請求。此類引發不同的事件來處理請求。
ASP.NET 頁面生命週期
當請求頁面時,它被載入到伺服器記憶體中,進行處理,然後傳送到瀏覽器。然後它從記憶體中解除安裝。在每個步驟中,都提供了方法和事件,可以根據應用程式的需要覆蓋這些方法和事件。換句話說,您可以編寫自己的程式碼來覆蓋預設程式碼。
Page 類建立頁面上所有控制元件的分層樹。頁面上的所有元件(指令除外)都是此控制元件樹的一部分。您可以透過將 trace="true" 新增到頁面指令中來檢視控制元件樹。我們將在“指令”和“事件處理”下介紹頁面指令和跟蹤。
頁面生命週期階段如下
- 初始化
- 例項化頁面上的控制元件
- 狀態的恢復和維護
- 執行事件處理程式程式碼
- 頁面呈現
瞭解頁面週期有助於編寫程式碼,以便在頁面生命週期的任何階段執行某些特定操作。它還有助於編寫自定義控制元件並在正確的時間初始化它們,使用檢視狀態資料填充其屬性並執行控制元件行為程式碼。
以下是 ASP.NET 頁面的不同階段
頁面請求 - 當 ASP.NET 獲取頁面請求時,它會確定是解析和編譯頁面,還是使用頁面的快取版本;相應地傳送響應。
頁面生命週期開始 - 在此階段,設定 Request 和 Response 物件。如果請求是舊請求或回發,則將頁面的 IsPostBack 屬性設定為 true。還設定頁面的 UICulture 屬性。
頁面初始化 - 在此階段,透過設定 UniqueID 屬性為頁面上的控制元件分配唯一 ID,並應用主題。對於新請求,載入回發資料並將控制元件屬性恢復為檢視狀態值。
頁面載入 - 在此階段,使用檢視狀態和控制元件狀態值設定控制元件屬性。
驗證 - 呼叫驗證控制元件的 Validate 方法,並在其成功執行後,將頁面的 IsValid 屬性設定為 true。
回發事件處理 - 如果請求是回發(舊請求),則呼叫相關的事件處理程式。
頁面呈現 - 在此階段,儲存頁面和所有控制元件的檢視狀態。頁面為每個控制元件呼叫 Render 方法,呈現的輸出寫入頁面的 Response 屬性的 OutputStream 類。
解除安裝 - 呈現的頁面傳送到客戶端,並且頁面屬性(例如 Response 和 Request)被解除安裝,並完成所有清理工作。
ASP.NET 頁面生命週期事件
在頁面生命週期的每個階段,頁面都會引發一些可以編碼的事件。事件處理程式基本上是繫結到事件的功能或子例程,使用宣告性屬性(如 Onclick 或 handle)。
以下是頁面生命週期事件
PreInit - PreInit 是頁面生命週期中的第一個事件。它檢查 IsPostBack 屬性並確定頁面是否為回發。它設定主題和母版頁,建立動態控制元件,並獲取和設定配置檔案屬性值。可以透過過載 OnPreInit 方法或建立 Page_PreInit 處理程式來處理此事件。
Init - Init 事件初始化控制元件屬性,並構建控制元件樹。可以透過過載 OnInit 方法或建立 Page_Init 處理程式來處理此事件。
InitComplete - InitComplete 事件允許跟蹤檢視狀態。所有控制元件都開啟檢視狀態跟蹤。
LoadViewState - LoadViewState 事件允許將檢視狀態資訊載入到控制元件中。
LoadPostData - 在此階段,處理使用 <form> 標記定義的所有輸入欄位的內容。
PreLoad - PreLoad 發生在回發資料載入到控制元件之前。可以透過過載 OnPreLoad 方法或建立 Page_PreLoad 處理程式來處理此事件。
Load - 首先為頁面引發 Load 事件,然後遞迴地為所有子控制元件引發。建立控制元件樹中的控制元件。可以透過過載 OnLoad 方法或建立 Page_Load 處理程式來處理此事件。
LoadComplete - 載入過程完成,執行控制元件事件處理程式,並進行頁面驗證。可以透過過載 OnLoadComplete 方法或建立 Page_LoadComplete 處理程式來處理此事件
PreRender - PreRender 事件發生在輸出呈現之前。透過處理此事件,頁面和控制元件可以在輸出呈現之前執行任何更新。
PreRenderComplete - 由於 PreRender 事件會遞迴地為所有子控制元件觸發,因此此事件確保預呈現階段的完成。
SaveStateComplete - 儲存頁面上控制元件的狀態。儲存個性化、控制元件狀態和檢視狀態資訊。生成 HTML 標記。此階段可以透過重寫 Render 方法或建立 Page_Render 處理程式來處理。
UnLoad - UnLoad 階段是頁面生命週期的最後一個階段。它遞迴地為所有控制元件引發 UnLoad 事件,最後為頁面本身引發。完成最終清理工作,並釋放所有資源和引用(如資料庫連線)。可以透過修改 OnUnLoad 方法或建立 Page_UnLoad 處理程式來處理此事件。