ASP.NET服务器控件编程浅析

当用户向请求一个页面时,服务器端会向客户端发送一段文本,包括可显示标记字符和不可显示的文本,当这段文本到达客户端后,再通过客户端的浏览器(如IE)把可视化的标记字符转化为可视呈现给用户,所以在用户请求一个aspx页面时,页面上的Asp.net服务器控件,也会把文本写入到返回的文本流中,在本章中我们将讲述这一过程,学习ASP.NET服务器控件编程的相关知识。

成都创新互联公司是专业的徽县网站建设公司,徽县接单;提供成都网站设计、成都做网站,网页设计,网站设计,建网站,PHP网站建设等专业做网站服务;采用PHP框架,可快速的进行徽县网站开发网页制作和功能扩展;专业做搜索引擎喜爱的网站,专业的做网站团队,希望更多企业前来合作!

ASP.NET服务器控件编程提供了4个有关呈现的方法,分别是Render、RenderChildren、RenderContents和RenderControl,这4个方法都有一个HtmlTextWriter类型的参数。HtmlTextWriter的作用就是把标记字符和文本写入倒Asp.net服务器控件流中,它是System.Web.UI名称空间所有标记编写器的基类,包括ChtmlTextWriter、Html32TextWriter和XhtmlTextWriter,这些类用于针对不同的标记类型编写元素、属性、样式和布局信息。

既然有4个有关呈现的方法,那它们的作用分别是什么?它们之间有什么区别呢?我们以一个控件的生成过程来说明:

每个页面都有一个控件树,代表本页面所拥有的所有子控件,页面控件就是控件树的根,为了生成控件树,页面将建立一个HtmlTextWriter类的实例;在这个实例中封装了相应流,接着页面会把HtmlTextWriter对象传递给RenderControl,RenderControl会检查控件的Visible属性是否为真,如果是真,RenderControl会调用Render方法,而Render方法会去调用RenderContents,RenderContents方法负责将控件的内容呈现到指定的编写器中,如果控件有子控件的话,Render方法又会把HtmlTextWriter传递给RenderChildren方法,RenderChildren方法负责生成控件的子控件。

我们以一个例子来说明ASP.NET服务器控件编程的过程。

 
 
 
 
  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服务器控件编程中HtmlTextWrite的各种方法的参数取值用到三种枚举类型:HtmlTextWriteTag、HtmlTextWriteAttribute和HtmlTextWriteStyle,在这里不作详细的讲解,举例如下,效果如上图的图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(); // 结束Render  
  26. // ------------------------------------------  
  27.  
  28.    
  29. // -------------------------------------------  
  30. // 第二种方式,通过Write + [Attribute、  
  31. StyleAttribute、BeginTag\EndTag]  
  32. // WriteAttribute、WriteStyleAttribute  
  33. 在WriteBeginTag和WriteEndTag之间  
  34. output.WriteBeginTag("input");     
  35. // 直接标记的名称,不使用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. // 直接使用样式标记,不使用HtmlTextWriteStyle枚举  
  42. output.Write("\"");  
  43. output.Write(HtmlTextWriter.TagRightChar);  // 添加“〉”标记  
  44. output.WriteEndTag("input");  
  45. // -----------------------------------------------  
  46.  
  47. // 第二种适用于对html比较熟悉的朋友。  
  48. }  

【编辑推荐】

  1. ASP.NET环境下的Shell函数
  2. 在ASP.NET中向数据库批量插入数据
  3. ASP.NET用Post方式向网页发送数据
  4. ASP.NET 2.0部署WEB应用程序浅析
  5. ASP.NET中的HttpWorkerRequest对像
  6. 介绍ASP.NET MVC框架

文章题目:ASP.NET服务器控件编程浅析
链接分享:http://www.gawzjz.com/qtweb2/news39/13589.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联