首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 网络编程-> Shell教程
根据html页面模板动态生成html页面(c#类)_c#应用
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 

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

转贴请注明出处,谢谢!
注:此类中的代码不全是原创,部份代码参照网友的代码!

以下是转换类的代码


代码
  1using System;
  2using System.Text;
  3using System.Web;
  4using System.Configuration;
  5using System.IO;
  6namespace solucky
  7{
  8    /**//// <summary>
  9    /// AspxToHtml 的摘要说明。
 10    /// 注:使用此类,你可以在web.config文件对模板类进行配置.如下
 11    /**//*<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    /**//// </summary>
 17    public class AspxToHtml
 18    {
 19        /**//// <summary>
 20        /// 模板文件中要替代的参数个数
 21        /// </summary>
 22        private int            _templateParamCount=0;
 23        /**//// <summary>
 24        /// 模板文件所在的路径
 25        /// </summary>
 26        private string        _templateFilePath        =ConfigurationSettings.AppSettings["templateFilePath"];
 27        /**//// <summary>
 28        /// 转换后的html文件所存放的路径
 29        /// </summary>
 30        private string        _htmlFilePath            =ConfigurationSettings.AppSettings["htmlFilePath"];
 31       
 32        /**//// <summary>
 33        /// 模板页页面编码
 34        /// </summary>
 35        private Encoding _templateHtmlCode            =Encoding.GetEncoding("gb2312");
 36
 37        /**//// <summary>
 38        /// 转换后的文件编码
 39        /// </summary>
 40        private Encoding _code = Encoding.GetEncoding("gb2312");
 41
 42        /**//// <summary>
 43        /// 转换后的html文件名
 44        /// </summary>
 45        private string  _convertedFilename="";
 46        /**//// <summary>
 47        /// 模板文件中的参数
 48        /// </summary>
 49        private string[]    _templateFileparameter    ;
 50       
 51        /**//// <summary>
 52        /// aspx文件中的要代替HTML文件中的参数实际值
 53        /// </summary>
 54        private string[]    _aspxFileparameter;
 55
 56        private string _errlogPath = ConfigurationSettings.AppSettings["ErrLogPath"];
 57
 58        属性#region 属性
 59       
 60        /**//// <summary>
 61        /// 模板文件中要替代的参数个数
 62        /// </summary>
 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        /**//// <summary>
 88        /// 模板文件所在的路径
 89        ///
 90        /// </summary>
 91        public string TemplateFilePath
 92        {
 93            get{    return this._templateFilePath;}
 94            set{    this._templateFilePath=value;}
 95        }
 96        /**//// <summary>
 97        /// 转换后的html文件所存放的路径
 98        /// </summary>
 99        public string HtmlFilePath
100        {
101            get{    return this._htmlFilePath;}
102            set{    this._htmlFilePath=value;}
103        }
104
105        /**//// <summary>
106        /// html模板文件编码
107        /// </summary>
108        public Encoding TemplateHtmlCode
109        {
110            get{    return this._templateHtmlCode;}
111            set{    this._templateHtmlCode=Encoding.GetEncoding(value.ToString());}
112        }
113        /**//// <summary>
114        /// 编码
115        /// </summary>
116        public Encoding Code
117        {
118            get{    return this._code;}
119            set{    this._code=Encoding.GetEncoding(value.ToString());}
120        }
121        /**//// <summary>
122        /// 错误文件所在路径
123        /// </summary>
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        /**//// <summary>
141        /// 获取转换后的html文件所在相对文件路径
142        /// 如:如果HtmlFilePath="/news/"
143        /// 转换后的html文件名为200505050505.html
144        /// 则返回的值为/news/200505050505.html
145        /// </summary>
146        /// <remarks>如果在未调用StartConvert方法之前调用此属性则返回null</remarks>
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        /**//// <summary>
159        /// 为HTML页面参数数组付值
160        /// </summary>
161        /// <param name="param"></param>
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        /**//// <summary>
177        /// 为aspx文件中将要替换html文件中的参数数组付值
178        /// </summary>
179        /// <param name="param"></param>
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        /**//// <summary>
195        /// 开始进行aspxTohtml转换
196        /// </summary>
197        /// <returns>返回值为成功创建后的文件名称</returns>
198        /// <remarks>在调用此方法之前必需确定已调用setTemplateFileparameter 和setAspxFileparameter方法进行相应的付值操作</remarks>
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        /**//// <summary>
210        /// 开始进行aspxTohtml转换
211        /// </summary>
212        /// <param name="htmlparam">html模板页中的所有参数数组</param>
213        /// <param name="aspxparam">aspx页面中要代替html模板页中参数值数组</param>
214        /// <returns>返回值为成功创建后的文件名称</returns>
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        /**//// <summary>
229        /// 用时间加随机数生成一个文件名
230        /// </summary>
231        /// <returns></returns>
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        /**//// <summary>
248        /// 进行转换处理
249        /// </summary>
250        /// <returns>返回以时间命名的文件名</returns>
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;i<this.TemplateParamCount;i++)
276            {
277                str =str.Replace(this._templateFileparameter[i],this._aspxFileparameter[i]);
278            }       
279
280            return savefile(str);
281        }
282
283        /**//// <summary>
284        ///
285        /// </summary>
286        /// <param name="str"></param>
287        /// <returns></returns>
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        /**//// <summary>
316        /// 传入URL返回网页的html代码
317        /// </summary>
318        /// <param name="Url">URL</param>
319        /// <returns></returns>
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        /**//// <summary>
355        /// 提供欲代替的参数个数
356        /// </summary>
357        /// <param name="templateParamCount"></param>
358        public AspxToHtml(int templateParamCount)
359        {   
360            settemplateParamCount(templateParamCount);
361           
362        }
363        /**//// <summary>
364        ///
365        /// </summary>
366        /// <param name="templateParamCount">html模板页中的参数个数</param>
367        /// <param name="htmlFilePath">生成的html文件所存放的文件夹路径</param>
368        /// <param name="templateFilePath">html模板页路径</param>
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        /**//// <summary>
381        /// 把错误写入文件方法#region 把错误写入文件方法
382        /// </summary>
383        /// <param name="ee"></param>
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

http://www.cnblogs.com/solucky/archive/2006/09/07/497188.html


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·jsp设置页面过期-JSP教程,Jsp/Servlet
·用SqlDataAdapter更新数据库的方法介绍-.NET教程,数据库应用
·用java关闭IE窗口-JSP教程,Java技巧及代码
·ADO.NET 2.0 Feature Matrix-ASP教程,ASP应用
·Jsp & Servlet 会话控制-JSP教程,Jsp/Servlet
·xmlhttp 乱码 的解决方法 (UTF8,GB2312 编码 解码)-ASP教程,XML相关
·使用C#编写Ice应用程序-.NET教程,C#语言
·用PHP实现WEB动态网页静态-PHP教程,PHP应用
·DataGrid基于Access的快速分页法-.NET教程,数据库应用
·HTML文档中小meta的大作用-ASP教程,XML相关
最新文章
·photoshop打造数码照片“像素块”特效_photoshop教程
·css中如何正确的使用id和class_css教程
·保证让新手轻松月挣500以上_网赚技巧
·记住10个关键词让你作一名成功的站长_站长心得
·对新人站长得一些善意得提醒_站长心得
·在windows vista中安装telnet客户端_windows vista
·怎样提高你的google adsense收入_站长心得
·googleadsense新手指南及常见问题整理_google推广
·高网站访问量的必胜之道:访google adwords经理(上)_google推广
·成功经验谈:运营blog的21个具体方法_网络编辑
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭