首页 > 其他分享 >HtmlTextWriter学习笔记

HtmlTextWriter学习笔记

时间:2022-10-12 22:02:37浏览次数:37  
标签:HtmlTextWriter 标签 writer HtmlTextWriterTag RenderEndTag 笔记 RenderBeginTag 学习

这两天正好在研究asp.net自定义控件制作,HtmlTextWriter在控件制作中发挥重要作用,能够帮助我快速生成html语句。因此决定写下笔记,方便以后查阅。HtmlTextWriter的名称空间是System.Web.UI,如果在winform程序下使用,不要忘了添加System.Web.dll引用。 

HtmlTextWriter与Html32TextWriter
这两个类不存在继承和被继承关系。HtmlTextWriter支持Html4.0标准,而Html32TextWriter支持Html3.2标准,在msdn中一般不建议将Html32TextWriter实例话,它仅为支持低版本的浏览器而设计。

HtmlTextWriter初始化

HtmlTextWriter的构造函数要求必须传递一个与TextWriter接口兼容的实例。大家可以根据需要选择合适的TextWriter接口实现类,因为该类的选择将决定最终生成的Html文本的输出方式,例如我想把结果输出到一个TextBox中,于是我就使用了StringWriter类的实例作为参数传入:
StringWriter sw=new System.IO.StringWriter();
HtmlTextWriter writer=new HtmlTextWriter(sw);
如果要获得结果,只需要使用sw.toString()就可以了。注意,HtmlTextWriter本身不提供输出方法或属性。

HtmlTextWriter常用方法

1. void RenderBeginTag(HtmlTextWriterTag tagKey)
用于创建Html开始标签,如<body>,这里的HtmlTextWriterTag是一个枚举类型,里面有所有的标准Html4.0标签枚举值,如果我要使用添加body标签,就是RenderBeginTag(HtmlTextWriterTag.Body)

2. void RenderEndTag()
与RenderBeginTag一一对应,有几个RenderBeginTag就必须有几个RenderEndTag,当然,RenderEndTag不一定要马上跟在对应的RenderBeginTag之后,要根据Html语句决定。如下面的例子:
<html>
<head></head>
<body></body>
</html>
上面一段是html基本结构,使用HtmlTextWriter生成就是
writer.RenderBeginTag(HtmlTextWriterTag.Html);
writer.RenderBeginTag(HtmlTextWriterTag.Head);
writer.RenderEndTag();
writer.RenderBeginTag(HtmlTextWriterTag.Body);
writer.RenderEndTag();
writer.RenderEndTag();
3. void AddAttribute()
用于添加标签的属性,例如<img>标签的url属性、width属性等。使用该方法时要注意一点,AddAttribute语句必须出现在对应的RenderBeginTag的前面,请看下面的例子:
writer.AddAttribute("url","../xxx.gif");
writer.AddAttribute("width","50");
writer.AddAttribute("height","50");
writer.RenderBeginTag(HtmlTextWriterTag.Img);
writer.RenderEndTag();

上面一段语句将添加<img url="../xxx.gif" width="50" height="50" />,可以发现所有的img标签属性的添加都在RenderBeginTag之前。

4. void Write()和void WriteLine()
用于写除标准Html标签以外的所有信息。

标签:HtmlTextWriter,标签,writer,HtmlTextWriterTag,RenderEndTag,笔记,RenderBeginTag,学习
From: https://blog.51cto.com/amadeus/5751664

相关文章

  • 学习日记(qsort)
    1、C语言标准库函数qsort(快速排序)声明在stdlib.h文件中,时间复杂度为n*log(n)voidqsort(void*base(需要排序的目标数组名),size_tnum(参与排序的目标数组元素个数),si......
  • 深度学习环境搭建
    (1) 安装Anaconda:建立Python应用环境安装成功界面如下:(2) VisualStudioCode:建立代码编辑环境1.安装Python扩展2.选择合适的Python解释器3.安装下列应用扩展......
  • 机器学习环境安装
    Mac下安装机器学习环境1.安装Anaconda:建立python应用环境访问https://repo.anaconda.com/archive/,选择.sh后缀pkg是可视化安装,sh是命令行方式安装。在terminal中执行......
  • 17组学习总结
    ​嵌套循环循环嵌套必须是包含关系,而且while、do…while、for循环都可以用循环嵌套,还可以相互嵌套。嵌套循环需要确保每层的循环关系.循环跳转语句  在switch条件......
  • 【每周CV论文推荐】 深度学习人脸检测入门必读文章
    欢迎来到《每周CV论文推荐》。在这个专栏里,还是本着有三AI一贯的原则,专注于让大家能够系统性完成学习,所以我们推荐的文章也必定是同一主题的。人脸图像是整个图像处理领域里......
  • 【NLP】 深度学习NLP开篇-循环神经网络(RNN)
    从这篇文章开始,有三AI-NLP专栏就要进入深度学习了。本文会介绍自然语言处理早期标志性的特征提取工具-循环神经网络(RNN)。首先,会介绍RNN提出的由来;然后,详细介绍RNN的模型结......
  • Java枚举类的学习
    packagejava1;/***@author高槐玉*#Description:*枚举类的使用*1,枚举类的理解:类的对象只有有限个,确定的。我们称此类为枚举类*2.当需要定义一姐常量时,强......
  • Retrofit学习笔记
    官网:https://square.github.io/retrofit/入门教程(入门、源码、设计模式):https://www.jianshu.com/p/8e6d16a982b8Retrofit简介Atype-safeHTTPclientforAndroid......
  • 深度学习第二课
    向文件写入数据问题1:将含有缺失值(NaN)最多的列删除。 利用   *.isna().sum()  来统计每列缺失值的个数,axis=0计算列,axis=1计算行再用data=data.drop(co......
  • 第一天学习
    MarkDown学习标题  字体Hello,World!Hello,World!Hello,World!Hello,World!Hello,World! 引用 分割线图片[  超链接点击跳转到狂神博客 列......