ASP.NET生成静态页面

使用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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ASP.NET MVC 一般处理程序(General Handler),也称为 ashx 文件,是一种在 ASP.NET MVC 中用于处理特定请求的一种方式。 ASP.NET MVC 一般处理程序继承自 IHttpHandler 接口,它主要用于处理静态文件或非标准的请求。与控制器不同,一般处理程序不需要路由或视图,它直接接受请求并返回处理结果。 一般处理程序在项目中以 .ashx 的文件形式存在,可以在其中实现一些自定义的处理逻辑。可以通过在 Global.asax 文件中注册路由来映射一般处理程序的请求。 与控制器相比,一般处理程序更轻量级,更适合处理一些简单的请求,如文件下载、图片验证码生成等。它使用起来更加灵活,并且性能也更好。 使用一般处理程序的步骤如下: 1. 在项目中创建一个 .ashx 文件。 2. 实现一般处理程序的逻辑,可以通过实现 ProcessRequest 方法来处理请求,同时还可以通过实现 IRequiresSessionState 接口来访问会话状态。 3. 在 Global.asax 文件中注册一般处理程序的路由,指定请求的 URL 模式和对应的一般处理程序类名。 4. 在浏览器中访问对应的 URL,即可触发一般处理程序的逻辑,并返回处理结果。 总之,ASP.NET MVC 一般处理程序是一种用于处理特定请求的方式,它比控制器更轻量级、更灵活,适合处理一些简单的请求。我们可以通过创建一般处理程序文件,实现自定义逻辑,并在 Global.asax 文件中注册路由来使用一般处理程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值