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

ASP.NET控件開發(fā)的基本概念

開發(fā) 后端
本文介紹ASP.NET控件開發(fā)的基本概念,包括介紹復(fù)合控件概念,復(fù)合控件的呈現(xiàn)和完成基本復(fù)合控件基本呈現(xiàn)等。

我們繼續(xù)討論ASP.NET控件開發(fā)的一些東西.

這次我們要討論的是復(fù)合控件.本文無法一步到位完整介紹,因?yàn)橛懻摰钠容^大,所以分兩次寫,這次就先講些基本概念吧,剩著的下次寫.好象復(fù)合控件網(wǎng)上已經(jīng)有很多教程了,相信大家也看過很多.如果看過的朋友就當(dāng)我再廢話一便,沒看過的朋友希望能給你帶來幫助.

1.復(fù)合控件概念

復(fù)合控件跟用戶控件有很多相似點(diǎn),***不同就是用戶控件后綴為ascx,而復(fù)合控件編譯后則為dll文件,還可以分發(fā)給大家使用,另外其他不同點(diǎn)還請(qǐng)參考MSDN吧,說白了,復(fù)合控件靈活性更大.

2.復(fù)合控件的呈現(xiàn)

(1)一般控件的呈現(xiàn)

從***篇到第六篇為止,我們用以呈現(xiàn)控件的方法介紹過的有Render方法和RenderContents方法.回顧一下吧,看以下其中的一小段代碼.

  1. publicoverridevoidRender(HtmlTextWriterwriter)  
  2. {  
  3. ..  
  4. writer.RenderBeginTag(HtmlTextWriterTag.Td);  
  5. writer.AddAttribute(HtmlTextWriterAttribute.Name,"CreditCardNo");  
  6. writer.AddAttribute(HtmlTextWriterAttribute.Id,"CreditCardNo");  
  7. writer.AddAttribute(HtmlTextWriterAttribute.Type,"text");  
  8. writer.RenderBeginTag(HtmlTextWriterTag.Input);  
  9. writer.RenderEndTag();  
  10. writer.RenderEndTag(); 

以前我們所做的控件都是上面這樣的寫法.我們可以認(rèn)為在Render方法實(shí)現(xiàn)了以下兩個(gè)功能.

◆標(biāo)簽布局(如td標(biāo)簽,讓控件呈現(xiàn)的好看點(diǎn)-_-)
◆呈現(xiàn)的標(biāo)簽(如input標(biāo)簽)

(2)復(fù)合控件的呈現(xiàn)方法

我們知道ASP.NET控件開發(fā)里面已經(jīng)提供給了我們像TextBox這樣的控件了,就如組裝電腦一下,你可以組裝.net提供你現(xiàn)有的控件,然后重新拼湊成一個(gè)新的控件,這樣便成了復(fù)合控件.但其呈現(xiàn)方法卻又不同.

復(fù)合控件是以包含子控件的形式呈現(xiàn)的,具體的呈現(xiàn)交給子控件自己去做,因?yàn)樽涌丶陨矶家呀?jīng)實(shí)現(xiàn)了其呈現(xiàn)方法(每個(gè)控件都繼承自Control類).假設(shè)你還不明白就看下面的圖吧.

LabelTextBox1為復(fù)合控件,LabelTextBox2則不是.兩者的呈現(xiàn)方式是不同的.具體實(shí)現(xiàn)方法請(qǐng)看下文

具體實(shí)現(xiàn)方法

3.完成基本復(fù)合控件基本呈現(xiàn)

(1)首先你要熟悉以下的屬性和方法
◆Control.CreateChildControls 方法用于創(chuàng)建子控件
◆Control.EnsureChildControls 方法用于確認(rèn)是否已創(chuàng)建子控件,如果未創(chuàng)建完成的話則調(diào)用CreateChildControls 方法創(chuàng)建子控件
◆Control.ChildControlsCreated 屬性 獲取一個(gè)值,是否已創(chuàng)建子控件

(2)了解并實(shí)現(xiàn)INamingContainer接口

用戶控件UserControl類則繼承了INamingContainer接口,確包保子控件具有唯一的ID名稱,那復(fù)合控件也需要實(shí)現(xiàn)這個(gè)接口達(dá)到一樣的目的,這個(gè)是值得注意的地方.

復(fù)合控件以類撰寫的方法來添加控件即CreateChildControls 方法,而非在Render方法中以下面方式實(shí)現(xiàn)

  1. writer.RenderBeginTag(HtmlTextWriterTag.Input); 

4.控件狀態(tài)以及性能方面的選擇

上面的例子你會(huì)發(fā)現(xiàn),再點(diǎn)擊按鈕以后,textbox值狀態(tài)被保存了下來,還記得以前以Render方法直接呈現(xiàn)input標(biāo)簽的控件嗎?在點(diǎn)擊按鈕以后textbox值狀態(tài)是無法保存的.

我們討論了數(shù)據(jù)回傳的一些知識(shí),我們也定義了一個(gè)textbox控件,在點(diǎn)擊按鈕以后,可以***的保存其值狀態(tài).至于原因,還請(qǐng)大家參考下文,作者已經(jīng)分析的很清楚了.

ASP.NET控件開發(fā)速成教程:生成復(fù)合控件

雖然創(chuàng)作復(fù)合控件相對(duì)比較容易,但是由于在撰寫時(shí)必須創(chuàng)建子控件,所以會(huì)出現(xiàn)性能系統(tǒng)開銷。如果您想優(yōu)化控件的性能,可以通過重寫 Render 方法,自己實(shí)現(xiàn)呈現(xiàn)邏輯。另外,必須實(shí)現(xiàn)控件所需的任何回發(fā)數(shù)據(jù)處理和回發(fā)事件處理。

本來想一起把事件處理和樣式也寫完了,但想寫好篇幅太多了,這次就先寫到這里吧,因?yàn)橄氚炎约盒睦锏囊馑急磉_(dá)明白還真的需要費(fèi)一定時(shí)間去想的.下次我們繼續(xù)討論復(fù)合控件的事件和樣式

【編輯推薦】

  1. 微軟發(fā)布ASP.NET MVC 2預(yù)覽版 多項(xiàng)功能更新
  2. ASP.NET服務(wù)器自定義控件安全準(zhǔn)則
  3. ASP.NET編程規(guī)范之編碼規(guī)范淺析
  4. 關(guān)于ASP.NET Session的一點(diǎn)認(rèn)識(shí)
  5. ASP.NET編程工具ASP.NET Web Matrix詳細(xì)介紹
責(zé)任編輯:佚名 來源: 博客園
相關(guān)推薦

2009-07-22 14:28:43

學(xué)習(xí)ASP.NET MASP.NET MVC

2009-08-04 10:43:59

ASP.NET控件開發(fā)

2010-01-13 16:26:57

VB.NET通知控件

2010-01-15 13:30:50

VB.NET Prog

2009-08-07 15:24:16

ASP.NET模板控件

2009-07-27 13:52:36

Panel控件ASP.NET

2009-08-07 14:42:02

ASP.NET控件開發(fā)

2009-08-07 15:34:15

ASP.NET數(shù)據(jù)綁定

2009-08-06 10:49:45

ASP.NET服務(wù)器控

2009-08-06 18:18:27

ASP.NET控件開發(fā)ASP.NET復(fù)合控件

2009-07-24 15:35:00

ASP.NET Gri

2009-09-09 09:09:17

ASP.NET MVC

2009-08-17 09:24:25

ASP.NET控件

2009-07-27 17:25:53

ASP.NET驗(yàn)證控件

2009-07-27 16:19:59

ASP.NET報(bào)表控件

2009-08-03 15:08:00

SqlDataSour

2009-08-06 15:21:45

ASP.NET控件開發(fā)RenderConte

2009-08-07 10:34:56

ASP.NET控件開發(fā)

2009-09-11 09:09:00

ASP.NETAdRotator控件

2009-07-20 13:32:24

ScriptManagASP.NET
點(diǎn)贊
收藏

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