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

淺談ASP.NET中render方法

開發 后端
Control.Render 方法是將服務器控件內容發送到提供的HtmlTextWriter 對象,此對象編寫將在客戶端呈現的內容。本文主要介紹的就是ASP.NET中render方法,一起來看。

Asp.net中所有的控件都是從System.Web.UI.Control類,在control類中定義了三個與呈現有關的方法,分別是Render方法,RenderChildren方法和RenderControl方法.其中RenderControl方法是public的方法,先看看這三個方法的實現:

  1. Public void RenderControl(HtmlTextWriter writer)   
  2. {   
  3. //判斷Visible屬性是否為真,如果是,則調用Render方法呈現控件,否則不呈現控件   
  4. if(Visible)   
  5. {   
  6. Render(writer);   
  7. }   
  8. }   
  9. Protected virtual void Render(HtmlTextWriter writer)   
  10. {   
  11. //在這里寫呈現控件本身的代碼   
  12. …….   
  13. //調用RenderChildren方法呈現該控件的子控件   
  14. RenderChildren(writer);   
  15. }   
  16. Protected virtual void RenderChildren(HtmlTextWriter writer)   
  17. {   
  18. //循環調用每個子控件中的RenderControl方法呈現子控件,遞歸實現呈現整個頁面的控件樹   
  19. foreach(Control c in Controls)   
  20. {   
  21. c.RenderControl(writer);   
  22. }   
  23. }  

RenderControl方法用于供外部類進行調用,以生成控件,如父控件調用子控件的Rendercontrol方法.在RenderControl方法只是作了是否顯示該控件的判斷,如果顯示則調用控件的被保護方法Render. 

Render方法是呈現控件的核心方法,在現實性自定義控件中,我們一般都是通過重寫Render方法來呈現控件的,如果控件是一個容器控件,就要重寫RenderChildren方法來呈現子控件.

所有的服務端控件都是從System.Web.UI.WebControl中派生.而WebControl又從Control中派生,所以WebControl具有上述的三個方法,但是又增加了幾個方法,它把Render方法又細分成三個方法:RenderBgeginTag,RenderContents,RenderEndTag.Render的實現代碼如下:

  1. Protected override void Render(HtmlTextWriter writer)   
  2. {   
  3. //呈現開始標簽   
  4. RenderBgeginTag(writer);   
  5. //呈現標簽的內容   
  6. RenderContents(writer);   
  7. //呈現結束標簽   
  8. RenderEndTag(writer);   
  9. }   
  10. Public virtual void RenderBeginTag(HtmlTextWriter writer)   
  11. {   
  12. //調用AddAttributesToRender方法,添加標簽的屬性   
  13. AddAttributesToRender(writer);   
  14. //判斷呈現的標簽是否為已知的標簽;   
  15. HtmlTextWriterTag tagkey=TagKey;   
  16. If (tagkey!=HtmlTextWriterTag.Unknown)   
  17. {   
  18. Writer.RenderBeginTag(tagkey);   
  19. }   
  20. Else   
  21. {   
  22. //未知標簽,則使用指定的標簽名TagName屬性   
  23. Writer.RenderBeginTag(this.TagName);   
  24. }   
  25. }   
  26. Protected virtual void RenderContents(HtmlTextWriter writer)   
  27. {   
  28. //如果要呈現子控件,就要調用基類的Render方法   
  29. base.Render(writer);   
  30. }  

看這幾個方法,我覺得好象沒有多大的必要把render方法分解成三個方法,這樣僅對于一呈現單個標簽的控件才有意義,對于復合的控件似乎沒什么意義,還增加了復雜度. 

總結:

1.如果從Control中派生,則應重載Render()方法呈現控件.如果控件是一個容器控件,則應在render方法中調用基類的base.RenderChildren()方法,呈現子控件.

2.如果從Webcontrol類中派生,分兩種情況,一種是利用TagKey屬性生成輸出的html標簽,這時應重載RenderContents()方法來呈現控件.第二種是不想呈現默認的的用TagKey生成的html標簽,這時應重載Render()方法來呈現控件,如下代碼所示:

  1. Protected virtual void Render(HtmlTextWriter writer)   
  2. {   
  3. //在這里寫呈現控件本身的代碼   
  4. AddAttributesToRender(writer);   
  5. RenderContents(writer);   
  6. }   
  7. Protected virtual void RenderContents(HtmlTextWriter writer)   
  8. {   
  9. //呈現本控件代碼   
  10. ….   
  11. //如果要呈現子控件,就要調用基類的Render方法   
  12. base.Render(writer);   
  13. }  

3.如果從Webcontrol類中派生,并且該控件是一個容器控件,則應在RenderContents中調用base.Render()方法,以呈現子控件.

其他的兩種方法,我們會在后續文章中介紹到。希望對你有幫助。

【編輯推薦】

  1. ASP.net的身份驗證方式FORMS
  2. 大型高性能ASP.NET系統架構設計
  3. 使用ASP.NET操作IIS7中使用應用程序
  4. 詳解ASP.NET MVC 3中View的變化
  5. ASP.NET控件10個最有用的屬性詳解
責任編輯:于鐵 來源: 博客園
相關推薦

2009-07-28 13:26:34

Render方法ASP.NET

2009-07-27 13:01:28

TreeViewASP.NET

2009-07-20 15:30:11

ASP.NET應用

2009-07-22 16:11:43

ASP.NET AJA

2009-07-24 10:52:42

ASP.NET ISA

2009-07-23 14:47:03

Page_Load方法ASP.NET

2009-07-21 14:16:02

ASP.NET管道優化

2011-08-23 10:58:59

2009-07-23 15:24:37

ASP.NET Ima

2009-07-27 16:19:59

ASP.NET報表控件

2009-07-28 17:49:30

ASP.NET定期回收

2009-07-22 13:24:24

ASP.NET MVC

2009-08-10 10:19:47

ASP.NET組件設計

2009-07-23 15:44:39

ASP.NET MVC

2009-07-20 17:12:17

ASP.NET訪問數據

2009-08-05 15:29:33

ASP.NET For

2009-07-28 16:03:23

ASP.NET狀態服務

2009-01-16 13:17:16

AjaxASP.NET.NET

2009-08-06 10:10:31

ASP.NET服務器控ASP.NET Ren

2009-07-21 15:02:19

ASP.NET應用程序
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久久 | 99久热在线精品视频观看 | 午夜视频在线免费观看 | 理论片免费在线观看 | 日韩在线小视频 | 亚洲久久久 | 亚洲成人精品影院 | 99久久日韩精品免费热麻豆美女 | 欧美一级黄| 免费看国产a| 97伦理电影网 | 玖玖视频 | 国产视频一区二区在线观看 | 久久成人免费观看 | 无码一区二区三区视频 | 日本在线观看视频 | 日本在线视 | 精品国产aⅴ | 天堂网中文字幕在线观看 | 欧美v在线 | 欧美色综合一区二区三区 | 麻豆精品国产91久久久久久 | 91一区二区三区在线观看 | 在线观看欧美日韩视频 | 日韩电影中文字幕 | 在线观看视频你懂得 | 99国产精品久久久 | 日日噜噜夜夜爽爽狠狠 | 亚洲第一福利网 | 久久婷婷国产麻豆91 | 久久91av| 精品日韩电影 | 91九色在线观看 | 亚洲va中文字幕 | 91精品国产色综合久久不卡98口 | 九九99九九精彩46 | 在线男人天堂 | 欧美日韩在线免费 | wwwxx在线观看 | 午夜精品 | 亚洲成人动漫在线观看 |