成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET服務(wù)器控件編程淺析

開發(fā) 后端
ASP.NET服務(wù)器控件編程提供了4個(gè)有關(guān)呈現(xiàn)的方法,分別是Render、RenderChildren、RenderContents和RenderControl,這4個(gè)方法都有一個(gè)HtmlTextWriter類型的參數(shù)。

當(dāng)用戶向請(qǐng)求一個(gè)頁(yè)面時(shí),服務(wù)器端會(huì)向客戶端發(fā)送一段文本,包括可顯示標(biāo)記字符和不可顯示的文本,當(dāng)這段文本到達(dá)客戶端后,再通過客戶端的瀏覽器(如IE)把可視化的標(biāo)記字符轉(zhuǎn)化為可視呈現(xiàn)給用戶,所以在用戶請(qǐng)求一個(gè)aspx頁(yè)面時(shí),頁(yè)面上的Asp.net服務(wù)器控件,也會(huì)把文本寫入到返回的文本流中,在本章中我們將講述這一過程,學(xué)習(xí)ASP.NET服務(wù)器控件編程的相關(guān)知識(shí)。

ASP.NET服務(wù)器控件編程提供了4個(gè)有關(guān)呈現(xiàn)的方法,分別是Render、RenderChildren、RenderContents和RenderControl,這4個(gè)方法都有一個(gè)HtmlTextWriter類型的參數(shù)。HtmlTextWriter的作用就是把標(biāo)記字符和文本寫入倒Asp.net服務(wù)器控件流中,它是System.Web.UI名稱空間所有標(biāo)記編寫器的基類,包括ChtmlTextWriter、Html32TextWriter和XhtmlTextWriter,這些類用于針對(duì)不同的標(biāo)記類型編寫元素、屬性、樣式和布局信息。

既然有4個(gè)有關(guān)呈現(xiàn)的方法,那它們的作用分別是什么?它們之間有什么區(qū)別呢?我們以一個(gè)控件的生成過程來說明:

每個(gè)頁(yè)面都有一個(gè)控件樹,代表本頁(yè)面所擁有的所有子控件,頁(yè)面控件就是控件樹的根,為了生成控件樹,頁(yè)面將建立一個(gè)HtmlTextWriter類的實(shí)例;在這個(gè)實(shí)例中封裝了相應(yīng)流,接著頁(yè)面會(huì)把HtmlTextWriter對(duì)象傳遞給RenderControl,RenderControl會(huì)檢查控件的Visible屬性是否為真,如果是真,RenderControl會(huì)調(diào)用Render方法,而Render方法會(huì)去調(diào)用RenderContents,RenderContents方法負(fù)責(zé)將控件的內(nèi)容呈現(xiàn)到指定的編寫器中,如果控件有子控件的話,Render方法又會(huì)把HtmlTextWriter傳遞給RenderChildren方法,RenderChildren方法負(fù)責(zé)生成控件的子控件。

我們以一個(gè)例子來說明ASP.NET服務(wù)器控件編程的過程。

  1. public class Class1 : WebControl  
  2. {  
  3. protected override void Render  
  4. (System.Web.UI.HtmlTextWriter writer)  
  5. {  
  6. writer.Write("RenderChildren〈br 〉");  
  7. base.Render(writer);  
  8. }  
  9.  
  10. protected override void RenderChildren  
  11. (System.Web.UI.HtmlTextWriter writer)  
  12. {  
  13. writer.Write("RenderChildren〈br 〉");  
  14. base.RenderChildren(writer);  
  15. }  
  16.  
  17. public override void RenderControl  
  18. (System.Web.UI.HtmlTextWriter writer)  
  19. {  
  20. writer.Write("RenderControl〈br 〉");  
  21. base.RenderControl(writer);  
  22. }  
  23.  
  24. protected override void RenderContents  
  25. (System.Web.UI.HtmlTextWriter writer)  
  26. {  
  27. writer.Write("RenderContents〈br 〉");  
  28. base.RenderContents(writer);  
  29. }  

效果如下的圖1(RenderControl—〉Render—〉RenderContents—〉RenderChildren):

 

在ASP.NET服務(wù)器控件編程中HtmlTextWrite的各種方法的參數(shù)取值用到三種枚舉類型:HtmlTextWriteTag、HtmlTextWriteAttribute和HtmlTextWriteStyle,在這里不作詳細(xì)的講解,舉例如下,效果如上圖的圖2:

  1. [DefaultProperty("Text")]  
  2. [ToolboxData("〈{0}:WebCustomControl1   
  3. runat=server〉〈/{0}:WebCustomControl1〉")]  
  4. public class WebCustomControl1 : WebControl  
  5. {  
  6. protected override void Render  
  7. (HtmlTextWriter output)  
  8. {  
  9. // -----------------------------------------  
  10. // ***種方式,通過Add + [Attribute、  
  11. StyleAttribute、BeginTag\EndTag]  
  12. // AddAttribute、AddStyleAttribute  
  13. 在RenderBeginTag和RenderEndTag之前  
  14. output.BeginRender();  // 開始Render  
  15. output.AddAttribute(HtmlTextWriterAttribute.  
  16. Value, "This is input.");   
  17. // 使用HtmlTextWriteAttribute枚舉  
  18. output.AddStyleAttribute(HtmlTextWriterStyle.  
  19. BackgroundColor, ColorTranslator.ToHtml  
  20. (Color.GreenYellow));     
  21. // 使用HtmlTextWriteStyle枚舉  
  22. output.RenderBeginTag(HtmlTextWriterTag.Input);     
  23. // 使用HtmlTextWriteTag枚舉  
  24. output.RenderEndTag();  
  25. output.EndRender(); // 結(jié)束Render  
  26. // ------------------------------------------  
  27.  
  28.    
  29. // -------------------------------------------  
  30. // 第二種方式,通過Write + [Attribute、  
  31. StyleAttribute、BeginTag\EndTag]  
  32. // WriteAttribute、WriteStyleAttribute  
  33. 在WriteBeginTag和WriteEndTag之間  
  34. output.WriteBeginTag("input");     
  35. // 直接標(biāo)記的名稱,不使用HtmlTextWriteTag枚舉  
  36. output.WriteAttribute("value""This is input too.");    
  37. // 直接使用屬性名稱,不使用HtmlTextWriteAttribute枚舉  
  38. output.Write(" style=\"");  
  39. output.WriteStyleAttribute("background-color",   
  40. ColorTranslator.ToHtml(Color.Lavender));    
  41. // 直接使用樣式標(biāo)記,不使用HtmlTextWriteStyle枚舉  
  42. output.Write("\"");  
  43. output.Write(HtmlTextWriter.TagRightChar);  // 添加“〉”標(biāo)記  
  44. output.WriteEndTag("input");  
  45. // -----------------------------------------------  
  46.  
  47. // 第二種適用于對(duì)html比較熟悉的朋友。  
  48. }  

【編輯推薦】

  1. ASP.NET環(huán)境下的Shell函數(shù)
  2. 在ASP.NET中向數(shù)據(jù)庫(kù)批量插入數(shù)據(jù)
  3. ASP.NET用Post方式向網(wǎng)頁(yè)發(fā)送數(shù)據(jù)
  4. ASP.NET 2.0部署WEB應(yīng)用程序淺析
  5. ASP.NET中的HttpWorkerRequest對(duì)像
  6. 介紹ASP.NET MVC框架
責(zé)任編輯:冰荷 來源: diybl
相關(guān)推薦

2009-08-10 14:25:33

ASP.NET服務(wù)器控

2009-08-05 17:11:51

ASP.NET控件開發(fā)ASP.NET服務(wù)器控

2009-08-07 17:49:44

控件設(shè)計(jì)器

2009-08-06 10:49:45

ASP.NET服務(wù)器控

2009-08-06 10:10:31

ASP.NET服務(wù)器控ASP.NET Ren

2009-07-28 09:46:53

ASP.NET服務(wù)器控

2009-08-04 13:10:05

ASP.NET服務(wù)器控

2009-07-27 17:25:53

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

2009-08-06 11:24:50

ASP.NET服務(wù)器控

2009-08-06 11:05:48

ASP.NET服務(wù)器控

2009-08-10 14:08:15

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

2009-08-04 17:18:37

2011-07-12 15:17:02

ASP.net服務(wù)器控件

2009-07-30 16:52:38

復(fù)合控件ASP.NET服務(wù)器控

2009-07-24 18:02:46

ASP.NET編程

2009-08-07 15:24:16

ASP.NET模板控件

2009-07-27 12:56:27

控件CheckBoxLASP.NET服務(wù)器

2009-08-04 13:39:43

ASP.NET 2.0

2009-08-04 15:13:38

2009-08-06 14:16:04

ASP.NET服務(wù)器控
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 日韩精品色网 | 正在播放一区二区 | 色天堂影院 | 日韩一区二区三区在线 | 夜夜骑综合 | h视频在线免费 | 波多野结衣先锋影音 | 国产日产久久高清欧美一区 | av黄色免费 | 精品成人在线视频 | 男人电影天堂 | 最新国产精品精品视频 | 国产羞羞视频在线观看 | 91麻豆精品国产91久久久久久 | 国产伦精品一区二区三区高清 | 综合在线视频 | 日韩欧美在线视频 | 二区中文字幕 | 女同久久另类99精品国产 | cao在线| 久久精品亚洲精品 | 又黄又爽的网站 | 成人影院av | 国产精品一区二区av | 欧美自拍一区 | 亚洲a视频 | 国产精品99 | 国产伊人久久久 | 国产福利在线 | 成年人在线视频 | 亚洲精品3 | 在线观看国产视频 | 99久久精品免费视频 | www.日韩 | 涩涩视频网站在线观看 | 中文字幕第十一页 | 在线观看中文字幕av | 欧美日韩一 | 中文字幕人成乱码在线观看 | 羞羞涩涩在线观看 | 久久久九九 |