ASP.NET生成静态页面的方法

使用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

朋友们只要把相应的参数修改为实际的值,就生成静态文件了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>