使 用ASP.NET生成静态页面的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串替换的方法。第一种方法编码量大,而且维护 比较困难。我重点讲解第二种方法。第二种方法的基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用真实的数 据替换掉,并生成一个HTML文件
请看代码
1.C#
using
System;2
using
System.Collections.Generic;3
using
System.Text;4
using
System.Xml;5
using
System.IO;6
7
namespace
htmlWeb8
{9
public class CreateHtm10
{11
12
13
private string fileName;14
15
public String FileName16
{17
get { return fileName; } 18
} 19
/// <summary> 20
/// 读取配置文件21
/// </summary> 22
/// <param name="dirName"> 配置文件的路径名 </param> 23
/// <param name="tag"> 配置文件中的标签名 </param> 24
/// <returns> _replaceStr的长度 </returns> 25
private int GetConfig(String dirName, String tag)26
{27
XmlDataDocument config = new XmlDataDocument();28
try 29
{30
config.Load(dirName);31
} 32
catch (Exception ex)33
{34
throw ex;35
} 36
XmlNodeList list = config.GetElementsByTagName(tag);37
return list.Count;38
} 39
/// <summary> 40
/// 生成HTML文件41
/// </summary> 42
/// <param name="configFileName"> 配置文件的路径名 </param> 43
/// <param name="configTag"> 配置文件中的标签名 </param> 44
/// <param name="dir"> 生成文件所在的文件夹的路径 </param> 45
/// <param name="templateFile"> 模板文件的的路径 </param> 46
/// <param name="param"> 要替换的字符串数组 </param> 47
/// <returns> 生成的文件名 </returns> 48
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)49
{50
fileName = null ;51
int count = GetConfig(configFileName, configTag);52
String[] _replaceStr = new String[count];53
try 54
{55
FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);56
StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding( " gb2312 " ));57
StringBuilder sb = new StringBuilder(reader.ReadToEnd());58
reader.Close();59
for ( int i = 0 ; i < count; i ++ )60
{61
sb.Replace( " $repalce[ " + i + " ]$ " , param[i]);62
} 63
64
fileName = DateTime.Now.ToFileTime().ToString() + " .htm " ;65
66
FileStream rFile = File.Create(dir + " / " + fileName);67
StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding( " gb2312 " ));68
writer.Write(sb.ToString());69
writer.Flush();70
writer.Close();71
72
73
74
75
} 76
catch (Exception ex)77
{78
throw ex;79
} 80
81
82
} 83
84
public void DeleteHtml(String dirName)85
{86
File.Delete(dirName);87
} 88
} 89
}
90
private int GetConfig(String dirName, String tag) 此方法用于读取配置文件(见后),主要是获得要替换的字符串的个数,在本类同体现为一个字符串数组
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param) 此方法用于生成静态页面
51.52行创建一个字符数组,数组长度为配置文件中的节点个数。55-58行读取模板文件,并用读到的模板文件的HTML代码生成一个 StringBuilder对象。59-62行使用StringBuilderd对象的repalce()方法替换标记“$repalce[i]$"为真 实的数据
64行生成一个唯一的文件名(防止覆盖)66-70行把新的字符串写到文件中。这样就生成了一个静态文件了。
下面看一个使用的实例:
一个文章管理系统,利用这个类来生成静态页面。
首先,建立一个配置文件 config.xml.此文件告诉使用者每个标记的含义。如下
<?
xml version="1.0" encoding="utf-8"
?>
2
<
htmlWeb
version
="1"
>
3
<
config
>
4
<
article
key
="0"
value
="title"
/>
5
<
article
key
="1"
value
="author"
/>
6
<
article
key
="2"
value
="context"
/>
7
<
aritcle
key
="3"
value
="date"
/>
8
</
config
>
9
</
htmlWeb
>
10
这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。
看模板文件
<
head
>
2
<
title
>
模板文件
</
title
>
3
</
head
>
4
<
body
>
5
<
h1
>
这是一个简单的HTML页,朋友们可以根据自己的需要重新设计
</
h1
>
6
<
li
>
标题:$replace[0]$
</
li
>
7
<
li
>
作者:$replace[1]$
</
li
>
8
<
li
>
内容:$repalce[2]$
</
li
>
9
<
li
>
时间:$repalce[3]$
</
li
>
10
</
body
>
使用方法:
using
System;2
using
System.Data;3
using
System.Configuration;4
using
System.Web;5
using
System.Web.Security;6
using
System.Web.UI;7
using
System.Web.UI.WebControls;8
using
System.Web.UI.WebControls.WebParts;9
using
System.Web.UI.HtmlControls;10
11
namespace
UseT12
{13
public class Test {14
15
public void main() { 16
string [] param = new string [ 4 ];17
param[ 0 ] = " 测试模板 " ;18
param[ 1 ] = " 农佳捷 " ;19
param[ 2 ] = " 这是一个测试文章 " ;20
param[ 3 ] = " 2007-10-30 " ;21
22
htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();23
cs.MakeHtml( " 配置文件的路径 24
“, ”article“, ”生成文件的路径“, " 模板文件的路径 " , param)25
26
} 27
} 28
}
29
朋友们只要把相应的参数修改为实际的值,就生成静态文件了。
介绍了一种使用ASP.NET和C#生成静态HTML页面的方法。通过读取模板文件并使用真实数据替换特定标记来生成静态页面。
277

被折叠的 条评论
为什么被折叠?



