All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
PHP经典的给图片加水印程序_[PHP教程]
Delphi动态按钮的窗体界面
ASP.NET Remoting体系结构(九)
掌握SQL Server的锁机制和锁模式_[SQL Server教程]
使用PHP开发网站过程中你注意到这些安全知识了吗?_[PHP教程]
servlet+ajax实例:由省份选择城市_[AJAX教程]
用PHP脚本在Linux系统上读取输入和对文件进行操作_php资料_编程技术
AJAX技术在PHP开发中的简单应用_[AJAX教程]
用gridview显示来自excel表格里的数据_[Asp.Net教程]
调用VS数据源实现数据库连接字符串配置_.net资料_编程技术
Reading number is top 10 pictures
含苞欲放的素颜美少女2
Fierce chengdu woman, street rape man
The real super beauty13
这才是真正的人体艺术1
The world's ten biggest attractions of inventory super the moon
Sora aoi on twitter3
非笑不可:最强爆笑图片精选
Embarrassing things comic collection2
China's first snake village3
西游四格漫画(四)
Download software ranking
C#COM编程指南
双旗镇刀客B
Tram sex maniac 2 (H) rar bag12
matrix2
株洲本地在线棋牌游戏
SP4 for SQL2000
Tram sex maniac 2 (H) rar bag16
网络管理员第三版
Rio big adventure
Ashlynn Video3
aaa published in(发表于) 2013/12/6 10:39:53 Edit(编辑)
根据html页面模板动态生成html页面

根据html页面模板动态生成html页面

根据html页面模板动态生成html页面(c#类)_.net资料_编程技术-数科优化网

一直以为动态生成静态页面不好做,昨天在网上找了下,我晕,其实很简单,思路大概是这样的,
1:建立一个html页面模板,在这个页面中把你想要动态显示的地方用特殊的字符串表示(如$htmlstrstr$);
2:在程序中用将这个html页面读到一个字符串变量如str;
3:用字符串的resplace方法将在第一步中特殊字符替换成你想要的内容;
4保存;
OK,so easy,今天就用C#写了一个这样的类,用来处理动态生成html页面的,自认为还写的完整,刚接触.NET不久,望指教


注:此类中的代码不全是原创,部份代码参照网友的代码!


以下是转换类的代码



代码
1using System;
2using System.Text;
3using System.Web;
4using System.Configuration;
5using System.IO;
6namespace solucky
7{
8 /**////


9 /// AspxToHtml 的摘要说明。
10 /// 注:使用此类,你可以在web.config文件对模板类进行配置.如下
11 /**//*
12
13
14
15
*/
16 /**////

17 public class AspxToHtml
18 {
19 /**////
20 /// 模板文件中要替代的参数个数
21 ///

22 private int _templateParamCount=0;
23 /**////
24 /// 模板文件所在的路径
25 ///

26 private string _templateFilePath =ConfigurationSettings.AppSettings["templateFilePath"];
27 /**////
28 /// 转换后的html文件所存放的路径
29 ///

30 private string _htmlFilePath =ConfigurationSettings.AppSettings["htmlFilePath"];
31
32 /**////
33 /// 模板页页面编码
34 ///

35 private Encoding _templateHtmlCode =Encoding.GetEncoding("gb2312");
36
37 /**////
38 /// 转换后的文件编码
39 ///

40 private Encoding _code = Encoding.GetEncoding("gb2312");
41
42 /**////
43 /// 转换后的html文件名
44 ///

45 private string _convertedFilename="";
46 /**////
47 /// 模板文件中的参数
48 ///

49 private string[] _templateFileparameter ;
50
51 /**////
52 /// aspx文件中的要代替HTML文件中的参数实际值
53 ///

54 private string[] _aspxFileparameter;
55
56 private string _errlogPath = ConfigurationSettings.AppSettings["ErrLogPath"];
57
58 属性#region 属性
59
60 /**////
61 /// 模板文件中要替代的参数个数
62 ///

63 public int TemplateParamCount
64 {
65 get
66 {
67 return this._templateParamCount;
68 }
69 set//分配参数个数时,同时为模板文件中的参数和aspx文件中的要代替HTML文件中的参数实际值这两个分配实际数组
70 {
71 if (value < 0)
72 throw new ArgumentException();
73
74 if(value>0)
75 {
76 this._templateParamCount=value;
77 //模板文件中的参数
78 _templateFileparameter = new string[value];
79 //aspx文件中的要代替HTML文件中的参数实际值
80 _aspxFileparameter = new string[value];
81 }
82 else
83 this._templateParamCount=0;
84 }
85 }
86
87 /**////
88 /// 模板文件所在的路径
89 ///
90 ///

91 public string TemplateFilePath
92 {
93 get{ return this._templateFilePath;}
94 set{ this._templateFilePath=value;}
95 }
96 /**////
97 /// 转换后的html文件所存放的路径
98 ///

99 public string HtmlFilePath
100 {
101 get{ return this._htmlFilePath;}
102 set{ this._htmlFilePath=value;}
103 }
104
105 /**////
106 /// html模板文件编码
107 ///

108 public Encoding TemplateHtmlCode
109 {
110 get{ return this._templateHtmlCode;}
111 set{ this._templateHtmlCode=Encoding.GetEncoding(value.ToString());}
112 }
113 /**////
114 /// 编码
115 ///

116 public Encoding Code
117 {
118 get{ return this._code;}
119 set{ this._code=Encoding.GetEncoding(value.ToString());}
120 }
121 /**////
122 /// 错误文件所在路径
123 ///

124 public string ErrLogPath
125 {
126 get{
127 if(!(this._errlogPath==null))
128 return this._errlogPath;
129 else
130 return "aspxTohtml_log.txt";
131 }
132 set{this._errlogPath=value;}
133 }
134
135
136 #endregion
137
138 操作#region 操作
139
140 /**////
141 /// 获取转换后的html文件所在相对文件路径
142 /// 如:如果HtmlFilePath="/news/"
143 /// 转换后的html文件名为200505050505.html
144 /// 则返回的值为/news/200505050505.html
145 ///

146 /// 如果在未调用StartConvert方法之前调用此属性则返回null
147 public string HtmlFileVirtualPath
148 {
149 get
150 {
151 if(!(this._convertedFilename==""))
152 return this.HtmlFilePath+this._convertedFilename;
153 else
154 return null;
155 }
156 }
157
158 /**////
159 /// 为HTML页面参数数组付值
160 ///

161 ///
162 public void setTemplateFileparameter(string[] param)
163 {
164 try
165 {
166 if(param.Length==this.TemplateParamCount)
167 this._templateFileparameter=param;
168 //else//与原定义的个数不等
169 //
170 }
171 catch(System.Exception ex)
172 {
173 WriteErrFile(ex);
174 }
175 }
176 /**////
177 /// 为aspx文件中将要替换html文件中的参数数组付值
178 ///

179 ///
180 public void setAspxFileparameter(string[] param)
181 {
182 try
183 {
184 if(param.Length==this.TemplateParamCount)
185 this._aspxFileparameter=param;
186 //else//与原定义的个数不等
187 //
188 }
189 catch(System.Exception ex)
190 {
191 WriteErrFile(ex);
192 }
193 }
194 /**////
195 /// 开始进行aspxTohtml转换
196 ///

197 /// 返回值为成功创建后的文件名称
198 /// 在调用此方法之前必需确定已调用setTemplateFileparameter 和setAspxFileparameter方法进行相应的付值操作
199 public string StartConvert()
200 {
201 if(this._templateFileparameter.Length==this._aspxFileparameter.Length)
202 {
203 return writeFile();
204 }
205 else{
206 return null;
207 }
208 }
209 /**////
210 /// 开始进行aspxTohtml转换
211 ///

212 /// html模板页中的所有参数数组
213 /// aspx页面中要代替html模板页中参数值数组
214 /// 返回值为成功创建后的文件名称
215 public string StartConvert(string[] htmlparam,string[] aspxparam)
216 {
217 //先调用setTemplateFileparameter 和setAspxFileparameter方法,进行付值操作
218 setTemplateFileparameter(htmlparam);
219 setAspxFileparameter(aspxparam);
220 //
221 string fn=this.StartConvert();
222 //
223 _convertedFilename=fn;
224 //
225 return fn;
226 }
227
228 /**////
229 /// 用时间加随机数生成一个文件名
230 ///

231 ///
232 private string getfilename()
233 {
234 //用时间加随机数生成一个文件名
235 System.Threading.Thread.Sleep(50);
236 string yearStr = System.DateTime.Now.Year.ToString();
237 string monthStr = string.Format("{0:0#}",System.DateTime.Now.Month);
238 string dayStr = string.Format("{0:0#}",System.DateTime.Now.Day);
239 string hourStr = string.Format("{0:0#}",System.DateTime.Now.Hour);
240 string minuteStr = string.Format("{0:0#}",System.DateTime.Now.Minute);
241 string secondStr = string.Format("{0:0#}",System.DateTime.Now.Second);
242 string millisecondStr = string.Format("{0:000#}",System.DateTime.Now.Millisecond);
243 System.Random rd = new System.Random();
244 return yearStr + monthStr + dayStr + hourStr + minuteStr + secondStr + millisecondStr + string.Format("{0:0000#}",rd.Next(100))+".html";
245 //return DateTime.Now.ToString("yyyyMMddHHmmss")+".html";
246 }
247 /**////
248 /// 进行转换处理
249 ///

250 /// 返回以时间命名的文件名
251 private string writeFile()
252 {
253
254 // 读取模板文件
255 string temp = HttpContext.Current.Server.MapPath(this.TemplateFilePath);
256 StreamReader sr=null;
257 string str="";
258 try
259 {
260 sr = new StreamReader(temp, this.TemplateHtmlCode);
261 str = sr.ReadToEnd(); // 读取文件
262 }
263 catch(Exception ex)
264 {
265 //HttpContext.Current.Response.Write(exp.Message);
266 //HttpContext.Current.Response.End();
267 WriteErrFile(ex);
268 }
269 finally
270 {
271 sr.Close();
272 }
273 // 替换内容
274 // 这时,模板文件已经读入到名称为str的变量中了
275 for(int i=0;i276 {
277 str =str.Replace(this._templateFileparameter[i],this._aspxFileparameter[i]);
278 }
279
280 return savefile(str);
281 }
282
283 /**////
284 ///
285 ///

286 ///
287 ///
288
289 private string savefile(string str)
290 {
291 // 写文件
292 StreamWriter sw=null;
293 try
294 {
295
296 string path = HttpContext.Current.Server.MapPath(this.HtmlFilePath);
297 //html文件名称
298 string htmlfilename=getfilename();
299 sw = new StreamWriter(path + htmlfilename , false, this.Code);
300 sw.Write(str);
301 sw.Flush();
302 return htmlfilename;
303 }
304 catch(Exception ex)
305 {
306 WriteErrFile(ex);
307 }
308 finally
309 {
310 sw.Close();
311 }
312 return "";
313 }
314
315 /**////
316 /// 传入URL返回网页的html代码
317 ///

318 /// URL
319 ///
320 public string getUrltoHtml(string Url)
321 {
322 try
323 {
324 System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
325 System.Net.WebResponse wResp =wReq.GetResponse();
326 System.IO.Stream respStream = wResp.GetResponseStream();
327 System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312"));
328 return savefile(reader.ReadToEnd());
329
330 }
331 catch(System.Exception ex)
332 {
333 WriteErrFile(ex);
334 }
335 return "";
336 }
337 #endregion
338
339
340 构造#region 构造
341
342 public AspxToHtml()
343 {
344 //
345 // TODO: 在此处添加构造函数逻辑
346 //
347 }
348
349 private void settemplateParamCount(int templateParamCount)
350 {
351 if (templateParamCount>0)
352 this.TemplateParamCount=templateParamCount;
353 }
354 /**////
355 /// 提供欲代替的参数个数
356 ///

357 ///
358 public AspxToHtml(int templateParamCount)
359 {
360 settemplateParamCount(templateParamCount);
361
362 }
363 /**////
364 ///
365 ///

366 /// html模板页中的参数个数
367 /// 生成的html文件所存放的文件夹路径
368 /// html模板页路径
369 public AspxToHtml(int templateParamCount,string htmlFilePath,string templateFilePath)
370 {
371 settemplateParamCount(templateParamCount);
372 this.HtmlFilePath = htmlFilePath;
373 this.TemplateFilePath = templateFilePath;
374
375 }
376 #endregion
377
378 #region
379
380 /**////
381 /// 把错误写入文件方法#region 把错误写入文件方法
382 ///

383 ///
384 private void WriteErrFile(Exception ee)
385 {
386
387 FileStream fs1 = new FileStream(HttpContext.Current.Server.MapPath(ErrLogPath), System.IO.FileMode.Append);
388 StreamWriter sw1 = new StreamWriter(fs1);
389 sw1.WriteLine("**************************************************");
390 sw1.WriteLine("错误日期:" + System.DateTime.Now);
391 sw1.WriteLine("错误描述:" + ee.Message);
392 sw1.WriteLine("错误名称:" + ee.Source);
393 sw1.WriteLine("详细:" + ee.ToString());
394 sw1.WriteLine("*************************************************");
395 sw1.Close();
396 }
397 #endregion
398 }
399}
400






添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.