您的位置:首页 > 编程语言 > ASP

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



朋友们只要把相应的参数修改为实际的值,就生成静态文件了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: