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

ASP.NET生成静态页面

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

using System;
using System.Collections.Generic;
using System.Text;
using System.Xml;
using System.IO;
namespace htmlWeb
{
public class CreateHtm
{
private string fileName;
public String FileName{ get { return fileName; }}
/// <summary>
/// 读取配置文件
/// </summary>
/// <param name="dirName">配置文件的路径名</param>
/// <param name="tag">配置文件中的标签名</param>
/// <returns>_replaceStr的长度</returns>
private int GetConfig(String dirName, String tag)
{
XmlDataDocument config = new XmlDataDocument();
try{config.Load(dirName);}
catch (Exception ex){ throw ex;}
XmlNodeList list = config.GetElementsByTagName(tag);
return list.Count;
}
/// <summary>
///生成HTML文件
/// </summary>
/// <param name="configFileName">配置文件的路径名</param>
/// <param name="configTag">配置文件中的标签名</param>
/// <param name="dir">生成文件所在的文件夹的路径</param>
/// <param name="templateFile">模板文件的的路径</param>
/// <param name="param">要替换的字符串数组</param>
/// <returns>生成的文件名</returns>
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param)
{
fileName = null;
int count = GetConfig(configFileName, configTag);//(1)
String[] _replaceStr = new String[count];//(2)
try
{
FileStream tFile = File.Open(templateFile, FileMode.Open, FileAccess.Read);//(3)
StreamReader reader = new StreamReader(tFile, Encoding.GetEncoding("gb2312"));
StringBuilder sb = new StringBuilder(reader.ReadToEnd());
reader.Close();//(4)
for (int i = 0; i < count; i++)//(5)
{
sb.Replace("$repalce[" + i + "]$", param[i]);
}//(6)
fileName = DateTime.Now.ToFileTime().ToString() + ".htm";//(7)
FileStream rFile = File.Create(dir+"/" + fileName);//(8)
StreamWriter writer = new StreamWriter(rFile, Encoding.GetEncoding("gb2312"));
writer.Write(sb.ToString());
writer.Flush();
writer.Close();//(9)
}
catch (Exception ex)
{
throw ex;
}
}
public void DeleteHtml(String dirName)
{
File.Delete(dirName);
}
}
}

private int GetConfig(String dirName, String tag) 此方法用于读取配置文件(见后),主要是获得要替换的字符串的个数,在本类同体现为一个字符串数组
public void MakeHtml(String configFileName, String configTag, String dir, String templateFile, String[] param) 此方法用于生成静态页面(1)(2)行创建一个字符数组,数组长度为配置文件中的节点个数。(3)-(4)行读取模板文件,并用读到的模板文件的HTML代码生成一个StringBuilder对象。(5)-(6)行使用StringBuilderd对象的repalce()方法替换标记“$repalce[i]$"为真实的数据
(7)行生成一个唯一的文件名(防止覆盖)(8)-(9)行把新的字符串写到文件中。这样就生成了一个静态文件了。
下面看一个使用的实例:
一个文章管理系统,利用这个类来生成静态页面。
首先,建立一个配置文件 config.xml.此文件告诉使用者每个标记的含义。如下

<?xml version="1.0" encoding="utf-8" ?>
<htmlWeb version="1">
<config>


<article key="0" value="title"/>


<article key="1" value="author"/>
<article key="2" value="context"/>


<aritcle key="3" value="date"/>
</config>
</htmlWeb>
这样配置后,类会把标记数组0,1,2,3的位置分别替换为题目,作者,内容,发布日期。
看模板文件

<head>
<title>模板文件</title>
</head>
<body>
<h1>这是一个简单的HTML页,朋友们可以根据自己的需要重新设计</h1>
<li>标题:$replace[0]$</li>
<li>作者:$replace[1]$</li>
<li>内容:$repalce[2]$</li>
<li>时间:$repalce[3]$</li>
</body>
使用方法:

using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
namespace UseT
{
public class Test

{
public void main()

{
string[] param = new string[4];
param[0] = "测试模板";
param[1] = "极限编程";
param[2] = "这是一个测试文章";
param[3] = "2011-2-11"

htmlWeb.CreateHtm cs = new htmlWeb.CreateHtm();

cs.MakeHtml("配置文件的路径“, ”article“, ”生成文件的路径“, "模板文件的路径", param)
}
}
}

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