一直以为动态生成静态页面不好做,昨天在网上找了下,我晕,其实很简单,思路大概是这样的,
1:建立一个html页面模板,在这个页面中把你想要动态显示的地方用特殊的字符串表示(如$htmlstrstr$);
2:在程序中用将这个html页面读到一个字符串变量如str;
3:用字符串的resplace方法将在第一步中特殊字符替换成你想要的内容;
4保存;
OK,so easy,今天就用C#写了一个这样的类,用来处理动态生成html页面的,自认为还写的完整,刚接触.NET不久,望指教,完整代码与示例在此下载:下载
转贴请注明出处,谢谢!
注:此类中的代码不全是原创,部份代码参照网友的代码!
以下是转换类的代码
代码
1
using System;
2
using System.Text;
3
using System.Web;
4
using System.Configuration;
5
using System.IO;
6
namespace solucky
7![](https://i-blog.csdnimg.cn/blog_migrate/34031c708bfe702fe82d01ff5c6593aa.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/0be121fa5b8988fbabbbc526af3b0fc0.gif)
{
8![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
9
/// AspxToHtml 的摘要说明。
10
/// 注:使用此类,你可以在web.config文件对模板类进行配置.如下
11![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//*<appSettings>
12
<add key="templateFilePath" value="htmlmoudel.htm" />
13
<add key="htmlFilePath" value="new/"></add>
14
<add key="ErrLogPath" value="aspxTohtml_log.txt"></add>
15
</appSettings>*/
16![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// </summary>
17
public class AspxToHtml
18![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
19![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
20
/// 模板文件中要替代的参数个数
21
/// </summary>
22
private int _templateParamCount=0;
23![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
24
/// 模板文件所在的路径
25
/// </summary>
26
private string _templateFilePath =ConfigurationSettings.AppSettings["templateFilePath"];
27![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
28
/// 转换后的html文件所存放的路径
29
/// </summary>
30
private string _htmlFilePath =ConfigurationSettings.AppSettings["htmlFilePath"];
31
32![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
33
/// 模板页页面编码
34
/// </summary>
35
private Encoding _templateHtmlCode =Encoding.GetEncoding("gb2312");
36![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
37![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
38
/// 转换后的文件编码
39
/// </summary>
40
private Encoding _code = Encoding.GetEncoding("gb2312");
41![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
42![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
43
/// 转换后的html文件名
44
/// </summary>
45
private string _convertedFilename="";
46![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
47
/// 模板文件中的参数
48
/// </summary>
49
private string[] _templateFileparameter ;
50
51![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
52
/// aspx文件中的要代替HTML文件中的参数实际值
53
/// </summary>
54
private string[] _aspxFileparameter;
55![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
56
private string _errlogPath = ConfigurationSettings.AppSettings["ErrLogPath"];
57![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
58![](https://i-blog.csdnimg.cn/blog_migrate/f2671b7f42ce505d9bf55a7a0ca257fb.gif)
属性#region 属性
59
60![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
/**//// <summary>
61
/// 模板文件中要替代的参数个数
62
/// </summary>
63
public int TemplateParamCount
64![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
65
get
66![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
67
return this._templateParamCount;
68
}
69
set//分配参数个数时,同时为模板文件中的参数和aspx文件中的要代替HTML文件中的参数实际值这两个分配实际数组
70![](https://i-blog.csdnimg.cn/blog_migrate/3112b7b6526db5bc83e275260ae60525.gif)
{
71
if (value < 0)
72
throw new ArgumentException();
73![](https://i-blog.csdnimg.cn/blog_migrate/587e34b10dcf5efbc0859b53470a2db3.gif)
74
if(value>0)
75