惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

S
Schneier on Security
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
D
DataBreaches.Net
F
Full Disclosure
腾讯CDC
博客园 - 【当耐特】
MyScale Blog
MyScale Blog
Stack Overflow Blog
Stack Overflow Blog
小众软件
小众软件
Hugging Face - Blog
Hugging Face - Blog
Last Week in AI
Last Week in AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
爱范儿
爱范儿
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
大猫的无限游戏
大猫的无限游戏
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
The Register - Security
The Register - Security
WordPress大学
WordPress大学
博客园 - 聂微东
雷峰网
雷峰网
J
Java Code Geeks
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
P
Privacy International News Feed
酷 壳 – CoolShell
酷 壳 – CoolShell
A
Arctic Wolf
Scott Helme
Scott Helme
C
Cyber Attacks, Cyber Crime and Cyber Security
T
Tor Project blog
博客园 - 三生石上(FineUI控件)
Know Your Adversary
Know Your Adversary
AWS News Blog
AWS News Blog
G
Google Developers Blog
www.infosecurity-magazine.com
www.infosecurity-magazine.com
C
CERT Recently Published Vulnerability Notes
O
OpenAI News
Project Zero
Project Zero
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
Application and Cybersecurity Blog
Application and Cybersecurity Blog
云风的 BLOG
云风的 BLOG
N
News and Events Feed by Topic
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Microsoft Security Blog
Microsoft Security Blog
Cisco Talos Blog
Cisco Talos Blog
P
Palo Alto Networks Blog
Schneier on Security
Schneier on Security

博客园 - cjnong

EVA:自定义字段实现 Mac OS 下安装mysqlclient报“mysql_config not found”的解决 Tensorflow之训练MNIST(1) [新手]在macOS环境下安装xdebug 31.8重拾技术人生 MAC下安装MAMP后,mysql server无法启动 用myeclipse配置hibernate 重学JSP—设置CATALINA_HOME环境变量 Java 回调函数 转自:http://blog.sina.com.cn/s/blog_48cf38890100go6x.html android学习笔记 创建一个android activity 启动不了android模拟器 口语考试制作(三)——使用DllImport调用非托管函数 在线口语考试系统制作(二) 在线口语考试制作(一) 网页播放器的控制参数的收集 使用不同版本的.net框架使服务器应用程序不可用 sql2005转SQL2000出现的问题 实现页面无刷新(使用回调函数) - cjnong - 博客园
ASP.NET生成静态页面的方法
cjnong · 2007-11-13 · via 博客园 - cjnong

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

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