Asp.net服务器控件编程(4) 呈现
当用户向请求一个页面时,服务器端会向客户端发送一段文本,包括可显示标记字符和不可显示的文本,当这段文本到达客户端后,再通过客户端的浏览器(如IE)把可视化的标记字符转化为可视呈现给用户,所以在用户请求一个aspx页面时,页面上的Asp.net服务器控件,也会把文本写入到返回的文本流中,在本章中我们将讲述这一过程。
在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方法负责生成控件的子控件。
我们以一个例子来说明这个过程。


























效果如下的图1(RenderControl—〉Render—〉RenderContents—〉RenderChildren):
HtmlTextWrite的各种方法的参数取值用到三种枚举类型:HtmlTextWriteTag、HtmlTextWriteAttribute和HtmlTextWriteStyle,在这里不作详细的讲解,举例如下,效果如上图的图2:


































如果在本文中发现有什么不妥的地方,请朋友们给与指点,小弟在此先谢过。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!