首頁 後端開發 C#.Net教程 Asp.Net中WebForm的生命週期相關講解

Asp.Net中WebForm的生命週期相關講解

Aug 08, 2017 am 11:17 AM
asp.net web

這篇文章主要為大家介紹了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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

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

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

如何使用python+Flask實作日誌在web網頁即時更新顯示 如何使用python+Flask實作日誌在web網頁即時更新顯示 May 17, 2023 am 11:07 AM

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

Nginx的Web伺服器caddy怎麼使用 Nginx的Web伺服器caddy怎麼使用 May 30, 2023 pm 12:19 PM

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

如何使用Golang實作網頁應用程式的表單驗證 如何使用Golang實作網頁應用程式的表單驗證 Jun 24, 2023 am 09:08 AM

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

Java API 開發中使用 Jetty7 進行 Web 伺服器處理 Java API 開發中使用 Jetty7 進行 Web 伺服器處理 Jun 18, 2023 am 10:42 AM

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

怎麼設定nginx保證frps伺服器與web共用80埠 怎麼設定nginx保證frps伺服器與web共用80埠 Jun 03, 2023 am 08:19 AM

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

Web 端即時防擋臉彈幕(基於機器學習) Web 端即時防擋臉彈幕(基於機器學習) Jun 10, 2023 pm 01:03 PM

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

web標準是什麼東西 web標準是什麼東西 Oct 18, 2023 pm 05:24 PM

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

如何從駕駛艙Web使用者介面啟用管理訪問 如何從駕駛艙Web使用者介面啟用管理訪問 Mar 20, 2024 pm 06:56 PM

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

See all articles