自定义控件(3)HtmlTextWriter
来源:互联网 发布:mysql排序规则 编辑:程序博客网 时间:2024/06/05 10:12
在前面的一片文章中我定义了一个HelloWorld控件,代码如下
using System.Web.UI;namespace kjlx.BLL.HelloWorld{ //继承自Control public class HelloWorld : Control { //Render,呈现,Control就是通过这一方法来输出内容的. protected override void Render(HtmlTextWriter writer) { writer.WriteLine("Hello World!"); } }}这个控件功能很简单,就是显示HelloWorld,不过不知道大家有没有注意控件到底是怎么在网页上输出"HelloWorld"的。
我们看一下代码
HtmlTextWriter writerwriter.WriteLine("Hello World!");
从代码中不难看出,控件是用HtmlTextWriter生成内容的。
下面我们就来学习一下HtmlTextWriter(参考http://www.cnblogs.com/tonyqus/archive/2005/02/15/104576.html)
HtmlTextWriter在控件制作中发挥重要作用,能够帮助我快速生成html语句
1.HtmlTextWriter初始化
HtmlTextWriter的构造函数要求必须传递一个与TextWriter接口兼容的实例。大家可以根据需要选择合适的TextWriter接口实现类,因为该类的选择将决定最终生成的Html文本的输出方式,例如我想把结果输出到一个TextBox中,于是我就使用了StringWriter类的实例作为参数传入:
StringWriter sw=new System.IO.StringWriter(); HtmlTextWriter writer=new HtmlTextWriter(sw);如果要获得结果,只需要使用sw.toString()就可以了。注意,HtmlTextWriter本身不提供输出方法或属性。
注意:不知道各位在上面的例子中看到writer.WriteLine的时候有没有和Response.Write联系在一起,把WriteLine方法当成在网页上输出内容。反正我刚开始学的时候一直是这么认为的。之后深入学习才知道HtmlTextWriter是没有输出方法的,它的作用是快速生成HTML,生成的html保存在sw中。下面我写个小实例。
第一个实例代码
using System;using System.IO;using System.Web.UI;public partial class HtmlTextWriterTest : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { Response.Write("程序开始</br>"); StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter writer=new HtmlTextWriter(sw); writer.Write("我是HtmlTextWriter</br>"); Response.Write("程序结束"); }}运行结果
第二个实例代码
using System;using System.IO;using System.Web.UI;public partial class HtmlTextWriterTest : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { Response.Write("程序开始</br>"); StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter writer=new HtmlTextWriter(sw); writer.Write("我是HtmlTextWriter</br>"); Response.Write(sw); Response.Write("程序结束"); }}
运行结果
从上面两个例子可以很清楚的知道,HtmlTextWriter的WriteLine方法并没有输出内容,而是生成内容,把内容保持到sw中。当我们输出sw时就能在页面上看到我们刚才生成的内容.
2.HtmlTextWriter常用方法
(1)RenderBeginTag(HtmlTextWriterTag tagKey) 和RenderEndTag()
RenderBeginTag方法创建HTML开始标签<div>
RenderEndTag方法创建HTML结束标签</div>
RenderEndTag创建的结束标签与离它最近的开始标签匹配
实例代码
using System;using System.IO;using System.Web.UI;public partial class HtmlTextWriterTest : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter writer = new HtmlTextWriter(sw); writer.RenderBeginTag(HtmlTextWriterTag.Div); //DIV开始标签 writer.RenderBeginTag(HtmlTextWriterTag.Span); //span开始标签 writer.RenderEndTag(); //span结束标签 pre1.InnerText = sw.ToString(); writer.RenderEndTag(); //DIV结束标签 pre2.InnerText = sw.ToString(); }}页面显示
(2)AddAttribute:用于添加标签的属性,例如<img>标签的url属性、width属性等。使用该方法时要注意一点,AddAttribute语句必须出现在对应的RenderBeginTag的前面,请看下面的例子:
using System;using System.IO;using System.Web.UI;public partial class HtmlTextWriterTest : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e) { StringWriter sw = new System.IO.StringWriter(); HtmlTextWriter writer = new HtmlTextWriter(sw); writer.AddAttribute("url", "../xxx.gif"); writer.AddAttribute("width", "50"); writer.AddAttribute("height", "50"); writer.RenderBeginTag(HtmlTextWriterTag.Img); writer.RenderEndTag(); pre1.InnerText = sw.ToString(); Response.Write(sw.ToString()); }}显示结果:
- 自定义控件(3)HtmlTextWriter
- 自定义控件写法htmlTextWriter
- 最简单的自定义控件(3)--与HtmlTextWriter有关的枚举
- asp.net自定义控件开发使用HtmlTextWriter类输出
- 自定义控件(4)HtmlTextWriter的三个最佳拍档
- 第一章 .Net 控件开发(WebForm) 开发简单自定义控件(3) HtmlTextWriter的相关枚举以及状态管理
- HtmlTextWriter
- asp.net服务器控件创建一(HtmlTextWriter)
- HtmlTextWriter类
- htmlTextWriter 类
- HtmlTextWriter类
- HtmlTextWriter 类
- HtmlTextWriter学习
- asp.net控件开发技巧(1)使用HtmlTextWriter类规范输出标签
- ckeditor 3 自定义控件
- 自定义控件3---TextView
- Android 自定义控件3
- 自定义控件3
- 软件架构设计-五视图方法论
- css3
- 小Q聊天机器人
- 2015多校第8场 HDU 5389 Zero Escape DP,递推
- 搜索引擎之正排索引
- 自定义控件(3)HtmlTextWriter
- 农产品追溯管理软件开发
- opengl中的矩阵变换
- U-boot 移植
- 高精度算法
- C++:窄字节转宽字节(宽字节转窄字节)
- Android SpannableString的用法
- iOS之类别(Category)、类扩展、继承的区别
- 字母大小写、翻转