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

 1using System;
 2using System.Collections.Generic;
 3using System.Text;
 4using System.Xml;
 5using System.IO;
 6
 7namespace 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>

使用方法:

 1using System;
 2using System.Data;
 3using System.Configuration;
 4using System.Web;
 5using System.Web.Security;
 6using System.Web.UI;
 7using System.Web.UI.WebControls;
 8using System.Web.UI.WebControls.WebParts;
 9using System.Web.UI.HtmlControls;
10
11namespace 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

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

转载于:https://www.cnblogs.com/guodapeng/archive/2007/11/13/958326.html

ASP.NET生成静态页面的方法相关推荐

  1. ASP.NET生成静态页面的简单实现

    1.使用场景 当页面的数据不需要经常更改时可采用静态页面方式. 2.使用静态页面的好处 (1)提高网站的访问速度 (2)减轻服务器负担 (3)利于搜索引擎抓取 3.ASP.NET生成静态页面 生成静态 ...

  2. 利用ASP.NET生成静态页面

    目前生成静态页面的方法大致分为两种,一种是直接访问动态页面地址,将其生成的html代码保存成静态页面.另一种是通过读取页面模板,对其中需要替换的内容进行替换的方式进行生成.其中前一种方法简单,对于生成 ...

  3. ASP.NET生成静态页面方法大全(1)

    方案1: /// <summary> /// 传入URL返回网页的html代码 /// </summary> /// <param name="Url" ...

  4. Asp.NET生成静态页面并分页

    因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...

  5. 解析网站发布系统利用ASP生成静态页面的方法

    1.WITH TEMPLET意思是,生成的页面架构将采用某个已设定的模板,在此之前我的一篇教程中介绍过,希望各位在看本教程之前对ASP采用模板应熟悉下. 2.ASP转变为HTML.不要我再说ASP转变 ...

  6. ASP.NET生成静态页面方法大全(2)

    模板页Text.html代码 CODE: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > ...

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

    本文来自:[url]http://bbs.51cto.com/thread-20212-1-1.html[/url] ASP2HTML WITH TEMPLET 我希望大家看到该标题就能让想象到它的功 ...

  8. ASP.NET C# 生成静态页面简单方法

    //源码是替换掉模板中的特征字符 string mbPath = Server.MapPath("template.html");             Encoding cod ...

  9. ASP.NET生成静态页面方法大全(3)

    2.asp.net代码: //---------------------读html模板页面到stringbuilder对象里---- string[] format=new string[4];//定 ...

最新文章

  1. rn 滑动验证_继卷轴屏之后,OPPO又展示一款“滑动”概念手机
  2. 【BIO】基于BIO实现简单动态HTTP服务器
  3. linux 用户和权限管理
  4. Java 洛谷 P1319 压缩技术
  5. JAVA 实现FTP功能_Java实现FTP上传下载功能
  6. lodash和debounce
  7. com.mysql.jdbc.PacketTooBigException,及mysql 设置 max_allow_packet
  8. scrapy 快速入门
  9. jupyter notebook添加虚拟环境
  10. 基于anbox的云游戏技术简介
  11. Windows 7 SP1整合补丁
  12. 【计算机图形学入门】笔记8:Shading 2着色(着色频率、图形管线、纹理映射)
  13. 蓝屏终止代码:WHEA_UNCORRECTABLE_ERROR
  14. 千分号‰打不出来 怎么打
  15. Wide Deep模型的理解及实战(Tensorflow)
  16. 新华三:让地铁更智慧
  17. 卡巴斯基KAV2013 – 免费一年 (六一活动)
  18. PS2060L-ASEMI肖特基二极管PS2060L
  19. 从双非到专业排名前三的C9高校的申博历程
  20. git 多人合作开发几个简单的步骤

热门文章

  1. flex air openWithDefaultApplication 时出现Illegal ...
  2. Java FAQ(6)
  3. LTE: UE特定的参考信号
  4. FD.io/VPP — GRE over IPSec
  5. 互联网协议 — IPSec 安全隧道协议 — NAT-T
  6. 架构师之路 — 分布式系统 — CAP 定理
  7. Linux内核移植之一:内核源码结构与Makefile分析
  8. U-Boot移植教程之一:U-Boot分析与启动过程
  9. 三极管形象经典的理解
  10. STM32使用DMA从串口读可变长度数据到内存