ASP.NET編程模型之ASP.NET頁(yè)面生命周期圖解
ASP.NET編程模型中ASP.NET頁(yè)面生命周期是指什么呢?它包括什么呢?ASP.NET編程模型之ASP.NET頁(yè)面生命周期具體的過(guò)程有哪些呢?下面就開始我們的講解吧:
ASP.NET 頁(yè)運(yùn)行時(shí),此頁(yè)將經(jīng)歷一個(gè)生命周期,在生命周期中將執(zhí)行一系列處理步驟。這些步驟包括初始化、實(shí)例化控件、還原和維護(hù)狀態(tài)、運(yùn)行事件處理程序代碼以及進(jìn)行呈現(xiàn)。了解頁(yè)的生命周期非常重要,這樣就能在合適的生命周期階段編寫代碼,以達(dá)到預(yù)期效果。此外,如果開發(fā)自定義控件,則必須熟悉頁(yè)生命周期,從而正確地初始化控件,使用視圖狀態(tài)數(shù)據(jù)填充控件屬性以及運(yùn)行所有控件行為邏輯。
ASP.NET編程模型之頁(yè)面生命周期執(zhí)行一系列步驟:頁(yè)面的初始化、實(shí)例化控件、還原和維護(hù)狀態(tài)、運(yùn)行事件處理程序代碼、呈現(xiàn)。為了在合適的階段執(zhí)行所需的代碼,所以要對(duì)頁(yè)面生命周期非常熟悉。在頁(yè)生命周期的各個(gè)階段,頁(yè)面會(huì)逐個(gè)引發(fā)定義的事件,通過(guò)對(duì)代碼開發(fā),在頁(yè)面的生命事件中執(zhí)行我們所需要的程序
頁(yè)生命周期階段
1、ASP.NET頁(yè)面生命周期之頁(yè)請(qǐng)求:發(fā)生在頁(yè)面生命周期之前,用戶請(qǐng)求頁(yè)時(shí),ASP.NET將確定是否需要分析和編譯頁(yè),從而確定是否開始頁(yè)面的生命周期,或者是否可以在不運(yùn)行頁(yè)的情況下發(fā)送頁(yè)面緩存以進(jìn)行響應(yīng)。
2、ASP.NET頁(yè)面生命周期之開始:設(shè)置頁(yè)屬性,如:HttpContext以及其他屬性;在此階段,頁(yè)面需要確定是回發(fā)請(qǐng)求還是新請(qǐng)求,并設(shè)置IsPostBack屬性;設(shè)置頁(yè)面的UICulture屬性。
3、 ASP.NET頁(yè)面生命周期之頁(yè)面初始化:加載所有主題;控件生成,并設(shè)置UniqueID;
注:ViewState、ControlState中的值還未加載至控件;如果頁(yè)面是回發(fā),則回發(fā)數(shù)據(jù)也還未加載;故此時(shí)控件可以訪問(wèn),但值可能出錯(cuò)。
4、ASP.NET頁(yè)面生命周期之加載:如果當(dāng)前請(qǐng)求是回發(fā)請(qǐng)求,則為控件加載ViewState和ControlState中的值。
5、ASP.NET頁(yè)面生命周期之驗(yàn)證:調(diào)用所有驗(yàn)證程序控件的Validate方法,此方法將設(shè)置驗(yàn)證程序控件和頁(yè)的IsValid屬性。
6、ASP.NET頁(yè)面生命周期之回發(fā)事件處理:如果請(qǐng)求是回發(fā)請(qǐng)求,則調(diào)用所有事件處理程序。
7、ASP.NET頁(yè)面生命周期之呈現(xiàn):首先對(duì)該頁(yè)和所有控件進(jìn)行保存視圖狀態(tài),然后對(duì)每個(gè)控件調(diào)用Render方法,它會(huì)提供一個(gè)文本編寫器,用于將控件的輸入寫入頁(yè)的Response屬性的OutputStream中。
8、ASP.NET頁(yè)面生命周期之卸載:完成呈現(xiàn),并已將頁(yè)發(fā)送至客戶端、準(zhǔn)備丟棄該頁(yè)后,調(diào)用卸載。將卸載屬性如:Response和Request等等。
下面是ASP.NET編程模型中ASP.NET頁(yè)面生命周期示圖
ASP.NET編程模型中ASP.NET頁(yè)面生命周期的簡(jiǎn)單架構(gòu)介紹就向你介紹到這里,之后我們會(huì)繼續(xù)詳細(xì)介紹ASP.NET編程模型之ASP.NET頁(yè)面生命周期的相關(guān)內(nèi)容。
【編輯推薦】
- ASP.NET Session使用淺析
- ASP.NET編程模型之HTTP協(xié)議淺析
- ASP.NET編程模型HTTP工作原理
- ASP.NET編程模型HTTP協(xié)議淺析
- ASP.NET編程模型之ASP.NET頁(yè)面構(gòu)成淺析