fetchhtmlwriter.cs

来自「该项目中对 SQLHelper 类进行了简单封装」· CS 代码 · 共 643 行 · 第 1/2 页

CS
643
字号
/* 
 * FetchHtmlWriter.cs @Microsoft Visual Studio 2008 <.NET Framework 3.5>
 * AfritXia
 * 2005-03-19
 * 
 * Copyright(c) http://www.AfritXia.NET/
 * 
 */

using System;
using System.Collections;
using System.IO;
using System.Web.UI;

namespace NET.AfritXia.MyHome.HomeStart.CodeLand
{
	/// <summary>
	/// FetchHtmlWriter 获取 aspx 页面所呈现的 html 代码,并存入 streamWriter 指定的文件中
	/// </summary>
	/// <example>
	/// public class Index : System.Web.UI.Page
	/// {
	///		// 复写 Index 类 Render 方法
	///		protected override void Render(HtmlTextWriter writer)
	///		{
	///			// 声明文本输出流
	///			StreamWriter streamWriter = new StreamWriter(@"Index.html", false);
	///
	///			// 输出 HTML 到屏幕设备,并将代码存入文本输出流
	///			base.Render(new FetchHtmlWriter(writer, streamWriter));
	///
	///			// 刷新文本输出流,写出静态文档
	///			streamWriter.Flush();
	///			streamWriter.Close();
	///		}
	///	}
	/// </example>
	public class FetchHtmlWriter : HtmlTextWriter
	{
		// HTML 输出流
		private HtmlTextWriter htmlTextWriter = null;
		// 文本数据流
		private StreamWriter streamWriter = null;
		// HTML 标签属性
		private Hashtable attributes = new Hashtable();
		// HTML 样式
		private Hashtable styles = new Hashtable();

		#region 类 CustomHtmlWriter 构造器
		/// <summary>
		/// 类 FetchHtmlWriter 参数构造器
		/// </summary>
		/// <param name="htmlTextWriter">HTML 输出流</param>
		/// <param name="streamWriter">文本输出流</param>
		public FetchHtmlWriter(HtmlTextWriter htmlTextWriter, StreamWriter streamWriter)
			: base(htmlTextWriter)
		{
			this.htmlTextWriter = htmlTextWriter;
			this.streamWriter = streamWriter;
		}
		#endregion

		#region 复写 HtmlTextWriter 成员函数
		/// <summary>
		/// 添加属性到输出流
		/// </summary>
		/// <param name="name">属性名</param>
		/// <param name="value">属性值</param>
		public override void AddAttribute(string name, string value)
		{
			this.attributes.Add(name, value);
			this.htmlTextWriter.AddAttribute(name, value);
		}

		/// <summary>
		/// 添加属性到输出流
		/// </summary>
		/// <param name="name">属性名</param>
		/// <param name="value">属性值</param>
		/// <param name="fEncode">是否为 HTML 编码</param>
		public override void AddAttribute(string name, string value, bool fEncode)
		{
			this.attributes.Add(name, this.EncodeAttributeValue(value, fEncode));
			this.htmlTextWriter.AddAttribute(name, value, fEncode);
		}

		/// <summary>
		/// 添加属性到输出流
		/// </summary>
		/// <param name="key">属性键</param>
		/// <param name="value">属性值</param>
		public override void AddAttribute(HtmlTextWriterAttribute key, string value)
		{
			this.attributes.Add(key.ToString(), value);
			this.htmlTextWriter.AddAttribute(key, value);
		}

		/// <summary>
		/// 添加属性到输出流
		/// </summary>
		/// <param name="key">属性键</param>
		/// <param name="value">属性值</param>
		/// <param name="fEncode">是否为 HTML 编码</param>
		public override void AddAttribute(HtmlTextWriterAttribute key, string value, bool fEncode)
		{
			this.attributes.Add(key.ToString(), this.EncodeAttributeValue(value, fEncode));
			this.htmlTextWriter.AddAttribute(key, value, fEncode);
		}

		/// <summary>
		/// 添加 CSS 属性到输出流
		/// </summary>
		/// <param name="name">属性名</param>
		/// <param name="value">属性值</param>
		public override void AddStyleAttribute(string name, string value)
		{
			this.styles.Add(name, value);
			this.htmlTextWriter.AddAttribute(name, value);
		}

		/// <summary>
		/// 添加 CSS 属性到输出流
		/// </summary>
		/// <param name="key">属性键</param>
		/// <param name="value">字符串值</param>
		public override void AddStyleAttribute(HtmlTextWriterStyle key, string value)
		{
			this.styles.Add(key.ToString(), value);
			this.htmlTextWriter.AddStyleAttribute(key, value);
		}

		/// <summary>
		/// 绘制开始标记,例如:<body bgcolor="#ffffff">
		/// </summary>
		/// <param name="tagName">要绘制的开始标记名称</param>
		public override void RenderBeginTag(string tagName)
		{
			base.PushEndTag(tagName);

			this.htmlTextWriter.RenderBeginTag(tagName);
			this.streamWriter.Write("<" + tagName);

			this.RenderStyleAttribute();
		}

		/// <summary>
		/// 绘制开始标记,例如:<body bgcolor="#ffffff">
		/// </summary>
		/// <param name="tagKey">要绘制的开始标记键</param>
		public override void RenderBeginTag(HtmlTextWriterTag tagKey)
		{
			base.PushEndTag(tagKey.ToString());

			this.htmlTextWriter.RenderBeginTag(tagKey);
			this.streamWriter.Write("<" + tagKey.ToString());

			this.RenderStyleAttribute();
		}

		/// <summary>
		/// 绘制结束标记,例如:</html>
		/// </summary>
		public override void RenderEndTag()
		{
			this.htmlTextWriter.RenderEndTag();
			this.streamWriter.Write("</" + base.PopEndTag() + ">");
		}

		/// <summary>
		/// 输出布尔值
		/// </summary>
		/// <param name="value">要输出的布尔值</param>
		public override void Write(bool value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出字符
		/// </summary>
		/// <param name="value">要输出的字符值</param>
		public override void Write(char value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出字符数组
		/// </summary>
		/// <param name="buffer">要输出的字符数组</param>
		public override void Write(char[] buffer)
		{
			this.htmlTextWriter.Write(buffer);
			this.streamWriter.Write(buffer);
		}

		/// <summary>
		/// 输出字符数组
		/// </summary>
		/// <param name="buffer">要输出的字符数组</param>
		/// <param name="index">起始位置</param>
		/// <param name="count">输出个数</param>
		public override void Write(char[] buffer, int index, int count)
		{
			this.htmlTextWriter.Write(buffer, index, count);
			this.streamWriter.Write(buffer, index, count);
		}

		/// <summary>
		/// 输出十进制数
		/// </summary>
		/// <param name="value">要输出的十进制数值</param>
		public override void Write(decimal value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出双精度数
		/// </summary>
		/// <param name="value">要输出的双精度数值</param>
		public override void Write(double value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出单精度数
		/// </summary>
		/// <param name="value">要输出的单精度数值</param>
		public override void Write(float value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出整形数
		/// </summary>
		/// <param name="value">要输出的整形数值</param>
		public override void Write(int value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出长整形数
		/// </summary>
		/// <param name="value">要输出的长整形数值</param>
		public override void Write(long value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出 Object
		/// </summary>
		/// <param name="value">要输出的 Object 值</param>
		public override void Write(object value)
		{
			this.htmlTextWriter.Write(value);
			this.streamWriter.Write(value);
		}

		/// <summary>
		/// 输出字符串
		/// </summary>
		/// <param name="format">字符串格式</param>
		/// <param name="arg0">格式化参数 0</param>
		public override void Write(string format, object arg0)
		{
			this.htmlTextWriter.Write(format, arg0);
			this.streamWriter.Write(format, arg0);
		}

		/// <summary>
		/// 输出字符串
		/// </summary>
		/// <param name="format">字符串格式</param>
		/// <param name="arg0">格式化参数 0</param>
		/// <param name="arg1">格式化参数 1</param>
		public override void Write(string format, object arg0, object arg1)
		{
			this.htmlTextWriter.Write(format, arg0, arg1);
			this.streamWriter.Write(format, arg0, arg1);
		}

		/// <summary>
		/// 输出字符串
		/// </summary>
		/// <param name="format">字符串格式</param>
		/// <param name="arg0">格式化参数 0</param>
		/// <param name="arg1">格式化参数 1</param>
		/// <param name="arg2">格式化参数 2</param>
		public override void Write(string format, object arg0, object arg1, object arg2)
		{
			this.htmlTextWriter.Write(format, arg0, arg1, arg2);
			this.streamWriter.Write(format, arg0, arg1, arg2);
		}

		/// <summary>
		/// 输出字符串
		/// </summary>
		/// <param name="format">字符串格式</param>
		/// <param name="arg">格式化参数数组</param>
		public override void Write(string format, params object[] arg)
		{
			this.htmlTextWriter.Write(format, arg);
			this.streamWriter.Write(format, arg);
		}

		/// <summary>
		/// 输出字符串
		/// </summary>
		/// <param name="value">要输出的字符串值</param>
		public override void Write(string value)

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?