ASP.NET生成静态页面的方法
2009-09-23 16:08
489 查看
使用ASP.NET生成静态页面的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串替换的方法。第一种方法编码量大,
而且维护比较困难。我重点讲解第二种方法。第二种方法的基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用
真实的数据替换掉,并生成一个HTML文件
请看代码
1.C#
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4
using
System.Xml;
5
using
System.IO;
6
7
namespace
htmlWeb
8
{
9
public
class
CreateHtm
10
{
11
12
13
private
string
fileName;
14
15
public
String FileName
16
{
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.此文件告诉使用者每个标记的含义。如下
1
<?
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的位置分别替换为题目,作者,内容,发布日期。
看模板文件
1
<
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
>
使用方法:
1
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
UseT
12
{
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
朋友们只要把相应的参数修改为实际的值,就生成静态文件了。
而且维护比较困难。我重点讲解第二种方法。第二种方法的基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用
真实的数据替换掉,并生成一个HTML文件
请看代码
1.C#
1
using
System;
2
using
System.Collections.Generic;
3
using
System.Text;
4
using
System.Xml;
5
using
System.IO;
6
7
namespace
htmlWeb
8
{
9
public
class
CreateHtm
10
{
11
12
13
private
string
fileName;
14
15
public
String FileName
16
{
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.此文件告诉使用者每个标记的含义。如下
1
<?
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的位置分别替换为题目,作者,内容,发布日期。
看模板文件
1
<
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
>
使用方法:
1
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
UseT
12
{
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生成静态页面方法大全(3)
- Asp.Net生成静态页面的实现方法
- asp.net生成静态页面的方法
- ASP.NET生成静态页面实现方法
- asp.net生成静态页(生成html静态页面)方法(一)
- ASP.NET生成静态页面实现方法
- ASP.NET生成静态页面实现方法
- ASP.NET生成静态页面方法大全
- ASP.NET 生成静态页面的方法(转)
- ASP.NET生成静态页面的方法
- ASP.NET生成静态页面的方法
- ASP.NET生成静态页面实现方法
- Asp.net生成静态页面最简单方法(源码)
- ASP.NET生成静态页面的方法
- ASP.NET生成静态页面实现方法
- ASP.NET生成静态页面实现方法
- ASP.NET生成静态页面的方法
- ASP.NET C# 生成静态页面简单方法
- ASP.NET生成静态页面的方法
- ASP.NET生成静态页面的方法