《第五章--服務(wù)器端控件》由會(huì)員分享,可在線閱讀,更多相關(guān)《第五章--服務(wù)器端控件(22頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。
1、Slide Title,Body Text,Second level,Third level,Fourth level,Fifth level,服務(wù)器端控件,服務(wù)器控件簡(jiǎn)介,引入:,主題:,ASP.NET服務(wù)器控件是指在服務(wù)器上執(zhí)行程序邏輯的組件。每個(gè)服務(wù)器控件都包含特定的屬性、事件和方法。當(dāng)包含控件的頁(yè)面執(zhí)行時(shí),.NET框架將根據(jù)控件屬性設(shè)置,將控件顯示在客戶端,這時(shí),用戶可能與控件與用戶發(fā)生交互行為,這些行為基本都是由控件的客戶端進(jìn)行控制。當(dāng)頁(yè)面被用戶提交時(shí),控件可在服務(wù)器端引發(fā)事件,并由服務(wù)器端根據(jù)相關(guān)事件處理程序來(lái)處理。服務(wù)器控件是Web Forms編程模型的基本元素。,服務(wù)器控件的層
2、次結(jié)構(gòu) 10分鐘,引入:,主題:,ASP.NET服務(wù)器控件類是在、和命名空間里實(shí)現(xiàn)的。,服務(wù)器控件的公共屬性、方法和事件,主題:,(1)服務(wù)器控件的公共屬性,所有的服務(wù)器控件均派生自類,在Control類中定義了一些常用的在使用服務(wù)器控件時(shí)的常用屬性。,Controls,該屬性用于指向一個(gè)控件所有子控件的集合。,ID,用戶為控件提供的標(biāo)識(shí)符,可使用該屬性來(lái)對(duì)服務(wù)器控件的屬性、事件和方法進(jìn)行調(diào)用。,Page 該屬性用于指向包含控件的頁(yè)對(duì)象。,服務(wù)器控件的公共屬性、方法和事件,Parent,該屬于用于指向其父控件。如果控件 B 是 A.Controls 的一個(gè)元素,則控件 A 是控件 B 的父控件
3、。,ViewState 該屬性用于記錄控件的狀態(tài)值,通常用于在從客戶端到服務(wù)器端的往返過(guò)程中保持控件的狀態(tài)數(shù)據(jù)。ViewState屬性中保存是的名稱/值對(duì),如UserName=“Guest”,EnableViewState,表明控件是否需要在往返過(guò)程中維護(hù)其視圖狀態(tài)。如果父控件不維護(hù)其視圖狀態(tài),則其子控件默認(rèn)也不維護(hù)其視圖狀態(tài)。,服務(wù)器控件的公共屬性、方法和事件,UniqueID ASP.NET框架為控件分配的唯一標(biāo)識(shí)符,該屬性不可修改。,ClientID,這是 ASP.NET 頁(yè)框架給控件分配的唯一標(biāo)識(shí)符,該唯一標(biāo)識(shí)符在客戶端上呈現(xiàn)為 HTML ID 特性。注意,當(dāng)用戶指定ID屬性后,Cli
4、entID屬性值將被重新設(shè)定。,Visible,決定控件在頁(yè)上是否可見。,(2)服務(wù)器控件的,公共事件,服務(wù)器控件有一些通用的事件,當(dāng)事件發(fā)生時(shí),ASP.NET會(huì)自動(dòng)調(diào)用控件的On,EventName,方法,具體如下:,Init事件,:初始化控件時(shí)觸發(fā),將調(diào)用OnInit方法;,Load事件:,加載服務(wù)器控件時(shí)觸發(fā),將調(diào)用OnLoad方法;,DataBinding事件:當(dāng)服務(wù)器控件綁定到數(shù)據(jù)源時(shí)觸發(fā),將調(diào)用OnDataBinding方法;,PreRender,事件:當(dāng)服務(wù)器控件將要呈現(xiàn)給其包含的Page對(duì)象時(shí)觸發(fā),將調(diào)用OnPreRender方法;,UnLoad,事件:當(dāng)服務(wù)器控件從內(nèi)存中卸載
5、觸發(fā),將調(diào)用OnUnLoad方法。,(3)服務(wù)器控件的方法,服務(wù)器控件除了上述事件的觸發(fā)方法外,還從類獲得了一些公共方法,下面列出幾個(gè)常用的公共方法:,Render 方法:允許控件向客戶端瀏覽器呈現(xiàn)內(nèi)容;,LoadViewState 方法:從ViewState中還原控件狀態(tài)信息;,SaveViewState,方法:將控件狀態(tài)保存到ViewState屬性中;,Dispose 方法,:允許控件執(zhí)行最終清除;,服務(wù)器控件工作原理,服務(wù)器控件的生命周期,階段,執(zhí)行操作,要重寫的方法,/,事件,初始化,初始化在傳入,Web,請(qǐng)求生命周期內(nèi)所需的設(shè)置。,Init,事件,(OnInit,方法,),加載視圖狀
6、態(tài),調(diào)用,LoadViewState,方法,設(shè)置控件的,ViewState,屬性。,LoadViewState,方法,處理回發(fā)數(shù)據(jù),處理所傳入的頁(yè)面數(shù)據(jù),并相應(yīng)地更新屬性。,LoadPostData,方法,注意,:只有處理回發(fā)數(shù)據(jù)的控件參與此階段。,加載,執(zhí)行所有請(qǐng)求共有的操作,如設(shè)置數(shù)據(jù)庫(kù)查詢。服務(wù)器控件已創(chuàng)建并初始化、狀態(tài)已還原并且窗體控件反映了客戶端的數(shù)據(jù)。,Load,事件,(OnLoad,方法,),發(fā)送回發(fā)更改通知,引發(fā)更改事件以響應(yīng)當(dāng)前和以前回發(fā)之間的狀態(tài)更改。,RaisePostDataChangedEvent,方法,注意,:只有引發(fā)回發(fā)更改事件的控件參與此階段,處理回發(fā)事件,處理
7、引起回發(fā)的客戶端事件,并在服務(wù)器上引發(fā)相應(yīng)的事件。,RaisePostBackEvent,方法,注意,只有處理回發(fā)事件的控件參與此階段。,預(yù)呈現(xiàn),保存在預(yù)呈現(xiàn)階段之前對(duì)控件狀態(tài)所做的更改,而在呈現(xiàn)階段所對(duì)的更改則會(huì)丟失。,PreRender,事件,(OnPreRender,方法,),保存狀態(tài),在此階段后,自動(dòng)將控件的,ViewState,屬性保持到字符串對(duì)象中。此字符串對(duì)象被發(fā)送到客戶端并作為隱藏變量發(fā)送回來(lái)。,SaveViewState,方法,呈現(xiàn),生成,HTML,文件給客戶端的輸出。,Render,方法,處置,開發(fā)人員執(zhí)行銷毀控件前的所有最終清理操作。在此階段必須釋放對(duì)昂貴資源的引用,如數(shù)
8、據(jù)庫(kù)鏈接。,Dispose,方法,卸載,系統(tǒng)執(zhí)行銷毀控件前的所有最終清理操作。,UnLoad,事件,(On UnLoad,方法,),服務(wù)器控件的類型,總的來(lái)說(shuō)可以分為3種類型:HTML服務(wù)器控件、標(biāo)準(zhǔn)服務(wù)器控件、自定義服務(wù)器控件。,(1)HTML服務(wù)器控件,HTML服務(wù)器控件派生自名稱空間。它們由普通HTML控件(指HTML已定義的控件,例如Button、Input等)轉(zhuǎn)換而來(lái),其呈現(xiàn)的輸出基本上與普通HTML控件一致。,將普通HTML控件的轉(zhuǎn)換為HTML服務(wù)器控件的方法比較簡(jiǎn)單。一般情況下,通過(guò)兩個(gè)步驟完成轉(zhuǎn)換:在普通HTML控件特性中添加Runat=Server屬性;設(shè)置ID屬性。,服務(wù)器
9、控件的類型,(2)標(biāo)準(zhǔn)服務(wù)器控件,ASP.NET標(biāo)準(zhǔn)服務(wù)器控件均在名稱空間中定義,因此也稱標(biāo)準(zhǔn)服務(wù)器控件為Web服務(wù)器控件。所謂“標(biāo)準(zhǔn)”是指這類服務(wù)器控件內(nèi)置于ASP.NET框架中,是預(yù)先定義的。,ASP.NET標(biāo)準(zhǔn)服務(wù)器控件可以分為以下5種類型。,表單控件,數(shù)據(jù)綁定控件,驗(yàn)證控件,多功能控件,移動(dòng)控件,服務(wù)器控件的類型,(3)自定義服務(wù)器控件,常見的自定義服務(wù)器控件分為4種:復(fù)合控件、驗(yàn)證控件、模板控件和數(shù)據(jù)綁定控件,WEB控件特點(diǎn),與常規(guī)HTML標(biāo)記相同,都位于HTML的HTML部分,請(qǐng)求含WEB控件的網(wǎng)頁(yè)時(shí),轉(zhuǎn)換為相應(yīng)的HTML標(biāo)記,可通過(guò)網(wǎng)頁(yè)源代碼以編程方式訪問,用于顯示文本的web控
10、件,Literal web,label,區(qū)別:,生成的html標(biāo)記不同,literal:僅顯示text屬性值,label:text屬性值+格式屬性,literal,單純?cè)诳蛻舳说膆tml形式的輸入,P134清單8.1,以編程方式設(shè)置literal 的text屬性,CurrentTime.Text=DateTime.Now,CurrentTime.Text=“”&DateTime.now&”,格式化輸出,精確指定輸出特定標(biāo)記,Label控件,重要屬性列表 P138,Label控件單純?cè)诳蛻舳说膆tml形式的輸出,取決與訪問網(wǎng)頁(yè)的瀏覽器的類型(根據(jù)Uer-Agent報(bào)頭信息決定),從而決定適應(yīng)特定瀏覽器的html,顏色屬性,邊框?qū)傩?字體屬性,雜項(xiàng)屬性,