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

译者 | 李睿审校 | 孙淑娟Web Speech API是一种Web技术,允许用户将语音数据合并到应用程序中。它可以通过浏览器将语音转换为文本,反之亦然。Web Speech API于2012年由W3C社区引入。而在十年之后,这个API仍在开发中,这是因为浏览器兼容性有限。该API既支持短时输入片段,例如一个口头命令,也支持长时连续的输入。广泛的听写能力使它非常适合与Applause应用程序集成,而简短的输入很适合语言翻译。语音识别对可访问性产生了巨大的影响。残疾用户可以使用语音更轻松地浏览

docker部署javaweb系统1.在root目录下创建一个路径test/appmkdirtest&&cdtest&&mkdirapp&&cdapp2.将apache-tomcat-7.0.29.tar.gz及jdk-7u25-linux-x64.tar.gz拷贝到app目录下3.解压两个tar.gz文件tar-zxvfapache-tomcat-7.0.29.tar.gztar-zxvfjdk-7u25-linux-x64.tar.gz4.对解

web端指的是电脑端的网页版。在网页设计中我们称web为网页,它表现为三种形式,分别是超文本(hypertext)、超媒体(hypermedia)和超文本传输协议(HTTP)。

区别:1、前端指的是用户可见的界面,后端是指用户看不见的东西,考虑的是底层业务逻辑的实现,平台的稳定性与性能等。2、前端开发用到的技术包括html5、css3、js、jquery、Bootstrap、Node.js、Vue等;而后端开发用到的是java、php、Http协议等服务器技术。3、从应用范围来看,前端开发不仅被常人所知,且应用场景也要比后端广泛的太多太多。

怎么解决高并发大流量问题?下面本篇文章就来给大家分享下高并发大流量web解决思路及方案,希望对大家有所帮助!

web前端打包工具有:1、Webpack,是一个模块化管理工具和打包工具可以将不同模块的文件打包整合在一起,并且保证它们之间的引用正确,执行有序;2、Grunt,一个前端打包构建工具;3、Gulp,用代码方式来写打包脚本;4、Rollup,ES6模块化打包工具;5、Parcel,一款速度极快、零配置的web应用程序打包器;6、equireJS,是一个JS文件和模块加载器。

和它本身的轻便一样,Bottle库的使用也十分简单。相信在看到本文前,读者对python也已经有了简单的了解。那么究竟何种神秘的操作,才能用百行代码完成一个服务器的功能?让我们拭目以待。1. Bottle库安装1)使用pip安装2)下载Bottle文件https://github.com/bottlepy/bottle/blob/master/bottle.py2.“HelloWorld!”所谓万事功成先HelloWorld,从这个简单的示例中,了解Bottle的基本机制。先上代码:首先我们从b

web浏览器是指“网页浏览器”,是一种用来检索、展示以及传递Web信息资源的应用程序;简单来说就是是用来浏览网络页面的软件。web浏览器主要通过HTTP协议与网页服务器交互并获取网页,这些网页由URL指定,文件格式通常为HTML,并由MIME在HTTP协议中指明。一个网页中可以包括多个文档,每个文档都是分别从服务器获取的。


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

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

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

Dreamweaver CS6
視覺化網頁開發工具

WebStorm Mac版
好用的JavaScript開發工具