Asp.Net中WebForm的生命週期相關講解
這篇文章主要為大家介紹了Asp.Net中WebForm生命週期的相關資料,文中介紹的非常星系,對大家具有一定的參考學習價值,需要的朋友們下面跟著小編一起來學習學習吧。
前言
本文主要介紹給大家的是關於Asp.Net中WebForm生命週期的相關內容,分享出來供大家參考學習,以下來看看詳細的介紹:
一. Asp.Net頁面生命週期的概念
當我們在瀏覽器網址列中輸入網址,回車檢視頁面時,這時會向伺服器端IIS)發送request請求,伺服器就會判斷傳送過來的請求頁面,當完全辨識TTP頁面處理程序類別後,ASP.NET執行時會呼叫處理程序的ProcessRequest 方法來處理請求、建立頁面物件。通常情況下,無需更改此方法的實現,因為它是由 Page 類別提供的。接下來被建立頁面物件的ProcessRequest方法使頁面經歷了各個階段:初始化、載入視圖狀態資訊和回發資料、載入頁面的使用者程式碼以及執行回發伺服器端事件。之後,頁面進入顯示模式:收集更新的視圖狀態,產生 HTML 程式碼並隨後將程式碼傳送到輸出控制台。最後,卸載頁面,並認為請求處理完畢。其中頁面物件ProcessRequest方法 完成的這一系列事件的處理過程就是Asp.Net頁面生命週期。
二、為什麼需要了解Asp.Net頁面生命週期
因為了解Asp.Net頁面生命週期,可以幫助開發者在生命週期的合適階段編寫程序,以達到預期的效果,另外如果你想自己開發自訂控件,就必須熟悉頁面的生命週期,以便正確進行控件的初始化,使用視圖狀態資料填充控件的屬性,以及運行任何控制項行為程式碼。也就是說只有熟悉了從創建到最後卸載等一系列的事件,開發起來才會順心順手,不會出現雲裡霧裡的感覺。
三、生命週期階段
1、要求頁:頁請求發生在頁生命週期開始前。
2、開始:在開始階段,設定頁屬性,如Request和Response。在此階段,頁面也會決定請求是回發請求還是新請求,並設定IsPostBack屬性。
3、初始化頁面:在頁面初始化期間,可以使用頁面中的控件,並將設定每個控件的UniqueID屬性。如果目前請求是回發請求,則回發資料尚未載入,且控制項屬性值尚未還原為視圖狀態中的值。
4、載入頁面:載入期間,如果目前請求是回發請求,則會使用從檢視狀態和控制項狀態復原的資訊載入控制項屬性。
5、驗證:在驗證期間,將呼叫所有驗證程式控制項的Validate方法,此方法將設定個別驗證程式控制項和頁的IsValid屬性。
6、回發事件處理:如果請求是回發請求,則會呼叫所有事件處理程序。
7、呈現頁面:在頁面呈現期間,視圖狀態將被儲存到頁面,然後頁面將呼叫每個控件,以將其呈現的輸出提供給頁的Response屬性的OutputStream。
8、卸載頁面:完全呈現頁、將頁面傳送至客戶端並準備丟棄時,將呼叫卸載。此時,將卸載頁屬性(如Response和Request)並執行清理。
四、生命週期的事件
#1、PreInit
使用該事件來執行下列操作:
檢查IsPostBack 屬性來決定是不是第一次處理該頁。
建立或重新建立動態控制項。
動態設定主控頁。
動態設定 Theme 屬性。
讀取或設定設定檔屬性值。
注意:
如果請求是回傳請求,則控制項的值尚未從檢視狀態還原。如果在此階段設定控制項屬性,則其值可能會在下一個事件中被重寫。
2、Init
在所有控制項都已初始化且已套用所有外觀設定後引發。使用該事件來讀取或初始化控制項屬性。
3、InitComplete
由 Page 物件引發。使用該事件來處理要求先完成所有初始化工作的任務。
4、PreLoad
如果需要在 Load 事件之前對頁或控制項執行處理,請使用該事件。
在 Page 引發該事件後,它會為自身和所有控制項載入視圖狀態,然後會處理 Request 實例包含的任何回發資料。
5、Load
Page 在 Page 上呼叫 OnLoad 事件方法,然後以遞歸方式對每個子控制項執行相同操作,如此循環往復,直到載入本頁和所有控制項為止。
使用OnLoad 事件方法來設定控制項中的屬性並建立資料庫連接
#6、控制項事件
使用這些事件來處理特定控制項事件,如Button 控制項的Click 事件或TextBox 控制項的TextChanged 事件。
注意:
在回發請求中,如果頁包含驗證程式控件,請在執行任何處理之前檢查Page 和各個驗證控制項的IsValid 屬性。
7、LoadComplete
對需要載入頁上的所有其他控制項的任務使用該事件。
8、PreRender
在該事件發生前:
Page 物件會針對每個控制項和頁EnsureChildControls。
設定了 DataSourceID 屬性的每個資料綁定控制項會呼叫 DataBind 方法。有關更多信息,請參見下面的資料綁定控制項的資料綁定事件。
頁上的每個控制項都會發生 PreRender 事件。使用此事件對頁或其控制項的內容進行最後變更。
9、SaveStateComplete
在該事件發生前,已針對頁和所有控制項儲存了 ViewState。將忽略此時對頁或控制項進行的任何變更。
使用該事件執行滿足以下條件的任務:要求已經儲存了視圖狀態,但未對控制項進行任何變更。
10、Render
這不是事件;在處理的這個階段,Page 物件會在每個控制項上呼叫此方法。所有 ASP.NET Web 伺服器控制項都有一個用來寫入出發送給瀏覽器的控制項標記的 Render 方法。
如果建立自訂控件,通常要重寫此方法以輸出控件的標記。不過,如果自訂控制項只合併標準的 ASP.NET Web 伺服器控件,不合併自訂標記,則不需要重寫 Render 方法。有關更多信息,請參見開發自訂 ASP.NET 伺服器控制項。
使用者控制項(.ascx 檔案)會自動合併呈現,因此不需要在程式碼中明確呈現該控制項。
11、Unload
該事件首先針對每個控制項發生,繼而針對該頁發生。在控制項中,使用該事件對特定控制項執行最後清理,如關閉控制項特定資料庫連線。
對於頁自身,使用該事件來執行最後清理工作,如:關閉開啟的檔案和資料庫連接,或完成日誌記錄或其他請求特定任務。
注意
在卸載階段,頁及其控制項已被呈現,因此無法對回應流做進一步變更。如果嘗試呼叫方法(如 Response.Write 方法),則該頁面將引發異常。
以上是Asp.Net中WebForm的生命週期相關講解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

一、日誌輸出到檔案使用模組:logging可以產生自訂等級日誌,可以輸出日誌到指定路徑日誌等級:debug(偵錯日誌)=5){clearTimeout(time)//如果連續10次取得的都是空日誌清除定時任務}return}if(data.log_type==2){//如果取得到新日誌for(i=0;i

Caddy簡介Caddy是一款功能強大,擴展性高的Web伺服器,目前在Github上已有38K+Star。 Caddy採用Go語言編寫,可用於靜態資源託管和反向代理。 Caddy具有以下主要特性:比較Nginx複雜的配置,其獨創的Caddyfile配置非常簡單;可以透過其提供的AdminAPI實現動態修改配置;預設支援自動化HTTPS配置,能自動申請HTTPS憑證並進行配置;能夠擴展到數以萬計的站點;可以在任意地方執行,沒有額外的依賴;採用Go語言編寫,內存安全更有保證。安裝首先我們直接在CentO

表單驗證是Web應用程式開發中非常重要的環節,它能夠在提交表單資料之前對資料進行有效性檢查,避免應用程式出現安全漏洞和資料錯誤。使用Golang可以輕鬆實現網頁應用程式的表單驗證,本文將介紹如何使用Golang來實作網頁應用程式的表單驗證。一、表單驗證的基本要素在介紹如何實作表單驗證之前,我們需要知道表單驗證的基本要素是什麼。表單元素:表單元素是指

JavaAPI開發中使用Jetty7進行Web伺服器處理隨著互聯網的發展,Web伺服器已經成為了應用程式開發的核心部分,同時也是許多企業所關注的焦點。為了滿足日益增長的業務需求,許多開發人員選擇使用Jetty進行Web伺服器開發,其靈活性和可擴展性受到了廣泛的認可。本文將介紹如何在JavaAPI開發中使用Jetty7進行We

首先你會有個疑惑,frp是什麼呢?簡單的說frp就是內網穿透工具,配置客戶端以後,可以透過伺服器來存取內部網路。現在我的伺服器,已經用nginx做站了,80端口只有一個,那如果frp的服務端也想使用80端口,那該怎麼辦呢?經過查詢,這個是可以實現的,就是利用nginx的反向代理來實現。補充一下:frps就是伺服器端(server),frpc就是客戶端(client)。第一步:修改伺服器中nginx.conf設定檔在nginx.conf中http{}裡加入以下參數,server{listen80

防擋臉彈幕,即大量彈幕飄過,但不會遮擋視訊畫面中的人物,看起來像是從人物背後飄過去的。機器學習已經火了好幾年了,但很多人都不知道瀏覽器中也能運行這些能力;本文介紹在視頻彈幕方面的實踐優化過程,文末列舉了一些本方案可適用的場景,期望能開啟一些腦洞。 mediapipeDemo(https://google.github.io/mediapipe/)展示主流防擋臉彈幕實現原理點播up上傳視訊伺服器後台計算提取視訊畫面中的人像區域,轉換成svg儲存用戶端播放視訊的同時,從伺服器下載svg與彈幕合成,人像

Web標準是一組由W3C和其他相關組織制定的規範和指南,它包括HTML、CSS、JavaScript、DOM、Web可訪問性和性能優化等方面的標準化,透過遵循這些標準,可以提高頁面的兼容性、可訪問性、可維護性和效能。 Web標準的目標是使Web內容能夠在不同的平台、瀏覽器和裝置上一致地展示和交互,提供更好的使用者體驗和開發效率。

Cockpit是一個面向Linux伺服器的基於Web的圖形介面。它主要是為了使新用戶/專家用戶更容易管理Linux伺服器。在本文中,我們將討論Cockpit存取模式以及如何從CockpitWebUI切換Cockpit的管理存取。內容主題:駕駛艙進入模式查找當前駕駛艙訪問模式從CockpitWebUI啟用Cockpit的管理訪問從CockpitWebUI禁用Cockpit的管理訪問結論駕駛艙進入模式駕駛艙有兩種訪問模式:受限訪問:這是駕駛艙的默認訪問模式。在這種存取模式下,您無法從駕駛艙Web用戶
