自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

ASP.NET組件設(shè)計之生命周期詳解

開發(fā) 后端
ASP.NET組件設(shè)計之生命周期是什么呢?對于ASP.NET控件生命周期的掌握十分重要,那么本文就向你介紹ASP.NET控件生命周期的13個主要的點。

ASP.NET組件設(shè)計之生命周期是什么呢?讓我們來看看:

當(dāng)一個ASP.NET頁面被請求后,一個page實例被生成,開始自己的邏輯,最終返回HTML流給用戶端。構(gòu)成邏輯處理的是page中存在的服務(wù)器端控件以及控件間的交互,并且在頁面結(jié)束前服務(wù)器控件們被銷毀(視.net的回收策略而定)。那么這些控件在短短的頁面處理過程中經(jīng)歷了創(chuàng)建、處理、銷毀等到底是如何組織的?這些控件是如何同其他控件交互,如何在多個頁面間保持狀態(tài)的?(這應(yīng)當(dāng)是整個控件開發(fā)的基本也是重要的知識)

首先,我們看看特殊的控件,也就是Page類,所有aspx頁面的父類(或者祖先)。因為這是我們程序員主要的舞臺。Page類繼承自TemplateControl, 且實現(xiàn)了IhttpHandler。IhttpHandler接口是保證頁面被ASP.NET框架所調(diào)度,并且可以獲得HTTP協(xié)議的數(shù)據(jù)輸入流以及獲得向HTTP輸出流輸出數(shù)據(jù)的能力;而TemplateControl類是繼承自Control類。Page實現(xiàn)了InamingContainer接口,這保證了他可以充當(dāng)頁面中的控件們的容器(控件們的戰(zhàn)斗舞臺)

好了,現(xiàn)在看看在ASP.NET組件設(shè)計中的ASP.NET控件生命周期(看看MS是如何定義這個框架體系的):

1、 Instance 實例化

通過控件的構(gòu)造器所實例化。還可以通過被父控件實例化而生成。

2、 Initialize 初始化

控件會通過默認(rèn)方式調(diào)用OnInit方法,從而引發(fā)On_init事件。Page根據(jù)aspx頁面的語法以及標(biāo)簽設(shè)定值來初始化控件,對聲明語法中的控件及其屬性賦值。作為一個特殊控件,一般可以在Page的OnInit事件中允許編程者提供控間的初始化操作(對某些屬性賦值)。對于控件包含的子控件,控件可以訪問他們,但是子控件是不可以訪問父控件的(因為控件此時還沒有被加載(Load))。

3、 Begin Tracking View State 開始跟蹤視圖狀態(tài)

發(fā)生在初始化階段末尾,Page會調(diào)用控件的TrackViewState方法(這是一個繼承自Control的保護方法)

4、 Load View State 加載視圖

此時,頁面框架自動恢復(fù)了ViewState字典(ViewState數(shù)據(jù)來自表單form中的隱含字段),控件會根據(jù)ViewState值來設(shè)定自己的屬性或者內(nèi)部字段變量等

5、 Load PostBack Data加載回傳數(shù)據(jù)

如果控件實現(xiàn)了IpostBackDataHandle接口,那么頁面回調(diào)用控件實現(xiàn)的接口,讓其參與對回傳數(shù)據(jù)的處理

6、 Load 加載

此時,控件樹(page的控件以及控件的子控件構(gòu)成的樹)所有控件都已經(jīng)被初始化,并恢復(fù)到上一個周期的狀態(tài)(這是通過ViewState獲得的),可以訪問其他的任何控件。

7、 Raise Change Events引發(fā)修改(控件的)事件

處理回傳的數(shù)據(jù),此時可能會引起控件的某些事件作為對某些屬性被修改的通知。

8、 Raise Postback Event 引發(fā)回傳數(shù)據(jù)

當(dāng)發(fā)生修改事件時候,引發(fā)將客戶端發(fā)生的一些事件映射到服務(wù)器控件的事件,從而調(diào)用控件的事件的處理例程。這大多是控件開發(fā)者的客戶—另外一些程序員重用控件時的舞臺。

9、 PreRender 預(yù)生成

通過調(diào)用控件的OnPreRender方法,執(zhí)行在生成控件前的所需任何工作。遞歸調(diào)用子控件的此方法。

10、Save View State 保存視圖狀態(tài)

控件繼承Control的方法來保存當(dāng)前控件狀態(tài)到ViewState中去

11、Render 生成

控件輸出HTML數(shù)據(jù)到HTML流中去。

12、Unload 卸載

頁面通過實現(xiàn)Page_Onload方法執(zhí)行清除工作,也默認(rèn)引發(fā)控件的Unload事件

13、Dispose釋放

此時,控件執(zhí)行清除占用資源的方法。

以上討論適宜于在aspx頁面中聲明創(chuàng)建的控件,如果是在頁面/控件的事件處理程序中創(chuàng)造得控件,則在控件加入到控件樹開始執(zhí)行各個階段,直到達(dá)到頁面的當(dāng)前階段,之后,該動態(tài)創(chuàng)建的控件將隨同頁面其他控件一樣工作。

ASP.NET組件設(shè)計中的ASP.NET控件生命周期就向你介紹到這里,希望對你在ASP.NET組件設(shè)計的學(xué)習(xí)中ASP.NET控件生命周期的了解有自己的認(rèn)識。

【編輯推薦】

  1. ASP.NET組件設(shè)計之ASP.NET Timer淺析
  2. ASP.NET組件設(shè)計學(xué)習(xí)之創(chuàng)建工程庫
  3. ASP.NET組件設(shè)計學(xué)習(xí)之ASP.NET服務(wù)器控件
  4. ASP.NET自定義控件入門淺析
  5. ASP.NET服務(wù)器控件視圖淺析
責(zé)任編輯:仲衡 來源: cnblogs
相關(guān)推薦

2009-07-31 10:47:18

ASP.NET頁面生命

2009-08-03 14:18:40

ASP.NET編程模型ASP.NET頁面生命

2013-04-07 10:42:56

Asp.Net頁面周期

2009-07-23 10:23:44

2009-07-20 10:33:02

ASP.NET MVC

2009-07-23 18:14:17

MVC生命周期

2009-02-12 13:16:55

請求生命周期MVCASP.NET

2009-08-03 14:37:38

ASP.NET編程模型頁面生命周期

2009-08-04 16:50:15

ASP.NET頁面生命

2009-08-04 16:05:15

ASP.NET頁面生命

2009-07-28 09:46:53

ASP.NET服務(wù)器控

2010-04-02 09:02:02

ASP.NET MVC

2009-08-04 17:49:31

Web Page生命周ASP.NET Pos

2009-08-10 13:32:15

ASP.NET TimASP.NET組件設(shè)計

2012-08-16 09:38:38

ASP.NET

2009-07-23 18:55:17

ASP.NET頁生命周

2011-06-21 10:26:37

2009-08-10 14:08:15

ASP.NET服務(wù)器控ASP.NET組件設(shè)計

2023-07-04 08:26:15

2021-04-26 09:22:07

ASP.NET Cor服務(wù)周期
點贊
收藏

51CTO技術(shù)棧公眾號