ASP.NET生成静态页面

    技术2022-05-19  22

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

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


    最新回复(0)