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

本文介绍了一种使用ASP.NET生成静态页面的有效方法,通过读取模板文件并使用字符串替换来快速生成静态网页。该方法简化了维护工作,并提供了一个实际的例子来说明如何实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用ASP.NET生成静态页面的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串替换的方法。第一种方法编码量大,而且维护比较困难。我重点讲解第二种方法。第二种方法的基本思路是:使用DW之类的工具生成一个静态页面模板。读取该模板文件,然后对里面的特殊标记使用真实的数据替换掉,并生成一个HTML文件
请看代码
1.C#

    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>

 这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。
看模板文件:

1 <html>
2 <head>
3 <title>模板文件</title>
4 </head>
5 <body>
6 <h1>这是一个简单的HTML页,朋友们可以根据自己的需要重新设计</h1>
7 <li>标题:$replace[0]$</li>
8 <li>作者:$replace[1]$</li>
9 <li>内容:$repalce[2]$</li>
10 <li>时间:$repalce[3]$</li>
11 </body>
12 </html>

使用方法:

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 public void main(){
15 string[] param = new string[4];
16 param[0] = "测试模板";
17 param[1] = "农佳捷";
18 param[2] = "这是一个测试文章";
19 param[3] = "2007-10-30";
20 htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();
21 cs.MakeHtml("配置文件的路径", "article", "生成文件的路径", "模板文件的路径", param)
22 }
23 }
24 }

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

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 private string fileName;
12 public String FileName
13 {
14 get { return fileName; }
15 }
16 /// <summary>
17 /// 读取配置文件
18 /// </summary>
19 /// <param name="dirName">配置文件的路径名</param>
20 /// <param name="tag">配置文件中的标签名</param>
21 /// <returns>_replaceStr的长度</returns>
22 private int GetConfig(String dirName, String tag)
23 {
24 XmlDataDocument config = new XmlDataDocument();
25 try
26 {
27 config.Load(dirName);
28 }
29 catch (Exception ex)
30 {
31 throw ex;
32 }
33 XmlNodeList list = config.GetElementsByTagName(tag);
34 return list.Count;
35 }
36 /// <summary>
37 ///生成HTML文件
38 /// </summary>
39 /// <param name="configFileName">配置文件的路径名</param>
40 /// <param name="configTag">配置文件中的标签名</param>
41 /// <param name="dir">生成文件所在的文件夹的路径</param>
42 /// <param name="templateFile">模板文件的的路径</param>
43 /// <param name="param">要替换的字符串数组</param>
44 /// <returns>生成的文件名</returns>
45 public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
46 {
47 fileName = null;
48 int count = GetConfig(configFileName, configTag);
49 String[] _replaceStr = new String[count];
50 try
51 {
52 FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);
53 StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("gb2312"));
54 StringBuilder sb = new StringBuilder(reader.ReadToEnd());
55 reader.Close();
56 for (int i = 0; i < count; i++)
57 {
58 sb.Replace("$repalce[" + i + "]$", param[i]);
59 }
60 fileName = DateTime.Now.ToFileTime().ToString() + ".htm";
61 FileStream rFile = File.Create(dir+"/" + fileName);
62 StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding("gb2312"));
63 writer.Write(sb.ToString());
64 writer.Flush();
65 writer.Close();
66 }
67 catch (Exception ex)
68 {
69 throw ex;
70 }
71 }
72 public void DeleteHtml(String dirName)
73 {
74 File.Delete(dirName);
75 }
76 }
77 }

转载于:https://www.cnblogs.com/gaoancai/archive/2011/05/16/static-page.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值