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

C#是一種編程語言,而.NET是一個軟件框架。 1.C#由微軟開發,適用於多平台開發。 2..NET提供類庫和運行時環境,支持多語言。兩者協同工作,構建現代應用。

C#.NET是一個強大的開發平台,結合了C#語言和.NET框架的優勢。 1)它廣泛應用於企業應用、Web開發、遊戲開發和移動應用開發。 2)C#代碼編譯成中間語言後由.NET運行時環境執行,支持垃圾回收、類型安全和LINQ查詢。 3)使用示例包括基本控制台輸出和高級LINQ查詢。 4)常見錯誤如空引用和類型轉換錯誤可以通過調試器和日誌記錄解決。 5)性能優化建議包括異步編程和優化LINQ查詢。 6)儘管面臨競爭,C#.NET通過不斷創新保持其重要地位。

C#.NET的未來趨勢主要集中在雲計算、微服務、AI和機器學習集成以及跨平台開發三個方面。 1)雲計算和微服務:C#.NET通過Azure平台優化雲環境表現,支持構建高效微服務架構。 2)AI和機器學習集成:借助ML.NET庫,C#開發者可在應用中嵌入機器學習模型,推動智能化應用發展。 3)跨平台開發:通過.NETCore和.NET5 ,C#應用可在Windows、Linux和macOS上運行,擴展部署範圍。

C#.NET開發的最新動態和最佳實踐包括:1.異步編程提高應用響應性,使用async和await關鍵字簡化非阻塞代碼;2.LINQ提供強大查詢功能,通過延遲執行和表達式樹高效操作數據;3.性能優化建議包括使用異步編程、優化LINQ查詢、合理管理內存、提升代碼可讀性和維護性、以及編寫單元測試。

如何利用.NET構建應用?使用.NET構建應用可以通過以下步驟實現:1)了解.NET基礎知識,包括C#語言和跨平台開發支持;2)學習核心概念,如.NET生態系統的組件和工作原理;3)掌握基本和高級用法,從簡單控制台應用到復雜的WebAPI和數據庫操作;4)熟悉常見錯誤與調試技巧,如配置和數據庫連接問題;5)應用性能優化與最佳實踐,如異步編程和緩存。

C#在企業級應用、遊戲開發、移動應用和Web開發中均有廣泛應用。 1)在企業級應用中,C#常用於ASP.NETCore開發WebAPI。 2)在遊戲開發中,C#與Unity引擎結合,實現角色控制等功能。 3)C#支持多態性和異步編程,提高代碼靈活性和應用性能。

C#和.NET適用於Web、桌面和移動開發。 1)在Web開發中,ASP.NETCore支持跨平台開發。 2)桌面開發使用WPF和WinForms,適用於不同需求。 3)移動開發通過Xamarin實現跨平台應用。

C#.NET生態系統提供了豐富的框架和庫,幫助開發者高效構建應用。 1.ASP.NETCore用於構建高性能Web應用,2.EntityFrameworkCore用於數據庫操作。通過理解這些工具的使用和最佳實踐,開發者可以提高應用的質量和性能。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

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

Dreamweaver CS6
視覺化網頁開發工具

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

Atom編輯器mac版下載
最受歡迎的的開源編輯器

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器