控制項執行生命週期(From MSDN)

來源:互聯網
上載者:User
控制項|執行 每次請求 ASP.NET 頁時,伺服器就會載入一個 ASP.NET 頁,並在請求完成時卸載該頁。頁及其包含的伺服器控制項負責執行請求並將 HTML 呈現給用戶端。雖然用戶端和伺服器之間的通訊是無狀態的和斷續的,但是必須使客戶感覺到這是一個連續執行的過程。

這種連續性假象是由 ASP.NET 頁架構、頁及其控制項實現的。回傳後,控制項的行為必須看起來是從上次 Web 請求結束的地方開始的。雖然 ASP.NET 頁架構可使執行狀態管理相對容易一些,但是為了獲得連續性效果,控制項開發人員必須知道控制項的執行順序。控制項開發人員需要瞭解:在控制項生命週期的各個階段,控制項可使用哪些資訊、保持哪些資料、控制項呈現時處於哪種狀態。例如,在填充頁上的控制項樹之前控制項不能調用其父級。

下表提供了控制項生命週期中各階段的進階概述。有關詳細資料,請點擊表中的連結。

階段 控制項需要執行的操作 要重寫的方法或事件
初始化 初始化在傳入 Web 請求生命週期內所需的設定。請參見處理繼承的事件。 Init 事件(OnInit 方法)
載入檢視狀態 在此階段結束時,就會自動填滿控制項的 ViewState 屬性,詳見維護控制項中的狀態中的介紹。控制項可以重寫 LoadViewState 方法的預設實現,以自訂狀態還原。 LoadViewState 方法
處理回傳資料 處理傳入表單資料,並相應地更新屬性。請參見處理回傳資料。
注意 只有處理回傳資料的控制項參與此階段。 LoadPostData 方法
(如果已實現 IPostBackDataHandler)

載入 執行所有請求共有的操作,如設定資料庫查詢。此時,樹中的伺服器控制項已建立並初始化、狀態已還原並且表單控制項反映了用戶端的資料。請參見處理繼承的事件。 Load 事件
(OnLoad 方法)

發送回傳更改通知 引發變更事件以響應當前和以前回傳之間的狀態更改。請參見處理回傳資料。
注意 只有引發回傳變更事件的控制項參與此階段。 RaisePostDataChangedEvent 方法
(如果已實現 IPostBackDataHandler)

處理回傳事件 處理引起回傳的用戶端事件,並在伺服器上引發相應的事件。請參見捕獲回傳事件。
注意 只有處理回傳事件的控制項參與此階段。 RaisePostBackEvent 方法
(如果已實現 IPostBackEventHandler)

預呈現 在呈現輸出之前執行任何更新。可以儲存在預呈現階段對控制項狀態所做的更改,而在呈現階段所對的更改則會丟失。請參見處理繼承的事件。 PreRender 事件
(OnPreRender 方法)

儲存狀態 在此階段後,自動將控制項的 ViewState 屬性保持到字串對象中。此字串對象被發送到用戶端並作為隱藏變數發送回來。為了提高效率,控制項可以重寫 SaveViewState 方法以修改 ViewState 屬性。請參見維護控制項中的狀態。 SaveViewState 方法
呈現 產生呈現給用戶端的輸出。請參見呈現 ASP.NET 伺服器控制項。 Render 方法
處置 執行銷毀控制項前的所有最終清理操作。在此階段必須釋放對昂貴資源的引用,如資料庫連結。請參見 ASP.NET 伺服器控制項中的方法。 Dispose 方法
卸載 執行銷毀控制項前的所有最終清理操作。控制項作者通常在 Dispose 中執行清除,而不處理此事件。 UnLoad 事件(On UnLoad 方法)

注意 要重寫 EventName 事件,請重寫 OnEventName 方法(並調用 base.OnEventName)。
第三列中的方法和事件是從 System.Web.UI.Control 繼承的,但以下幾個除外:LoadPostData 和 RaisePostDataChangedEvent 是 IPostBackDataHandler 介面的方法,而 RaisePostBackEvent 屬於 IPostBackEventHandler 介面。如果控制項參與回傳資料處理,則必須實現 IPostBackDataHandler。如果控制項收到回傳事件,則必須實現 IPostBackEventHandler。

表中沒有列出 CreateChildControls 方法,這是由於每當 ASP.NET 頁架構需要建立控制項樹時就會調用該方法,且該方法調用並不限於控制項生命週期的特定階段。例如,可以在載入頁時、在綁定資料過程中或者在呈現過程中調用 CreateChildControls。




相關文章

E-Commerce Solutions

Leverage the same tools powering the Alibaba Ecosystem

Learn more >

Apsara Conference 2019

The Rise of Data Intelligence, September 25th - 27th, Hangzhou, China

Learn more >

Alibaba Cloud Free Trial

Learn and experience the power of Alibaba Cloud with a free trial worth $300-1200 USD

Learn more >

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。