将.aspx转换为.htm的两种方法 方法一:根据模板生成,保持在html文件夹中 思路分析: 1.写一个自定义的HTM模板 其中需要替换的地方用$value$这样 包含起来 2.生成页面的ASPX中,用StreamReader读取HTM模板,用REPLACE 替换$value$ 3.把完成的字符串用StreamWriter输出 参考代码如下: 1)定义模板emplate.htm 复制代码 代码如下: $title$ 生成静态页的Demo|-51aspx.com

$title$


内容:$content$
版权所有 2)在Default.aspx页面的按扭的事件处理中写如下代码: 复制代码 代码如下://源码是替换掉模板中的特征字符 string mbPath = Server.MapPath("template.htm"); Encoding code = Encoding.GetEncoding("gb2312"); StreamReader sr = null; StreamWriter sw = null; string str = null; //读取 try { sr = new StreamReader(mbPath, code); str = sr.ReadToEnd(); } catch (Exception ex) { throw ex; } finally { sr.Close(); } //根据时间自动重命名,扩展名也可以自行修改 string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm"; str = str.Replace("$title{1}quot;, txtTitle.Text);//替换Title str = str.Replace("$content{1}quot;, txtContent.Text);//替换content //生成静态文件 try { sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code); sw.Write(str); sw.Flush(); } catch (Exception ex) { throw ex; } finally { sw.Close(); Response.Write("恭喜" + fileName + "已经生成,保存在htm文件夹下!"); } 方法二:根据Url地址生成静态页保持 思路分析: 直接将做好的动态页面翻译成静态页面,所以生成的内容不够灵活 参考代码: 复制代码 代码如下://根据Url地址生成静态页保持 protected void Button2_Click(object sender, EventArgs e) { Encoding code = Encoding.GetEncoding("utf-8"); StreamReader sr = null; StreamWriter sw = null; string str = null; //读取远程路径 WebRequest temp = WebRequest.Create(txtUrl.Text.Trim()); WebResponse myTemp = temp.GetResponse(); sr = new StreamReader(myTemp.GetResponseStream(), code); //读取 try { sr = new StreamReader(myTemp.GetResponseStream(), code); str = sr.ReadToEnd(); } catch (Exception ex) { throw ex; } finally { sr.Close(); } string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm"; //写入 try { sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code); sw.Write(str); sw.Flush(); } catch (Exception ex) { throw ex; } finally { sw.Close(); Response.Write("恭喜" + fileName + "已经生成,保存在htm文件夹下!"); } }