asp.net 生成html页面的二种方法

作者:袖梨 2022-06-25

数据库教程中查询出title,content,datetime三个内容之后,分别替换掉模版中对应位置的{title},{content},{datetime}然后保存为xx.html一个静态页就生成了。
今天写的实例主要体现替换保存的步骤。
模版就不做了,直接整个body作为一个标签,把要做成静态页的动态页面的body部分当作是查询出的数据替换掉{body}部分,生成一张静态页。(首页静态可以这么做哦)。

1.使用serever.Excute

 StreamWriter sw = new StreamWriter(Server.MapPath("html/Login.html"), false);
            Server.Execute("ShowColumn.asp教程x?id=1&page=2", sw);
            sw.Close();


2.替换字符

url重写
1.定义重写规则

urls.xml 变成urls.config


 
 

2.创建一个简单的实体urls类
3.urls类 获取urls.config文件中的所有url
4.httpmodule类处理 请求的地址
5.在web.config httpmodule节点添加

方法二上面的实现原理

先读取模版内容

#region 读取模版
private string template(string uri) {
string content;
StreamReader sr;
sr = File.OpenText(uri);
content = sr.ReadToEnd();
return content;
}
#endregion

模版是个空页面,因为我们主要模拟这个写入的读取模版写入保存的过程。
整张template.html文件中就一行$html$。
接着是获取目标页内容

#region 筛选内容
private string Content(string uri){
HtmlAgilityPack.HtmlWeb htmlWeb = new HtmlAgilityPack.HtmlWeb();
HtmlDocument hDoc = htmlWeb.Load(uri);
string content = hDoc.DocumentNode.InnerHtml;
return content;
}
#endregion
然后是将获取的目标页内容替换掉模版页的$html$部分
string tpuri = txtTp.Text;
string pageuri = txtUri.Text;
string tpcontent = Template(tpuri);
string pgcontent = Content(pageuri);
string result = tpcontent.Replace(“$html$”, pgcontent);
最后写个保存替换好的内容的方法
#region 保存为静态页
private void CreatePage(string result) {
StreamWriter sw;
sw = File.CreateText(“index.html”);
sw.Write(result);
sw.Close();
}
#endregion
最后完成生成静态页
string tpuri = txtTp.Text;
string pageuri = txtUri.Text;
string tpcontent = Template(tpuri);
string pgcontent = Content(pageuri);
string result = tpcontent.Replace(“$html$”, pgcontent);
CreatePage(result);


测试的时候路径会在IDE文件夹 整个过程就是这样。

 


如果要生成大批量的页面上面的看上去会有点问题,服务器负载哦,你懂的。

看个生成表态页面的类

  

1. using System; 
   2. using System.Collections.Generic; 
   3. using System.Linq; 
   4. using System.Web; 
   5. using System.Net; 
   6. using System.IO; 
   7. using System.Text; 
   8. using System.Web.UI.HtmlControls; 
   9. using System.Text.RegularExpressions; 
  10.  
  11. ///  
  12. ///CreateHtml 的摘要说明 
  13. ///
 
  14. public class CreateHtml:System.Web.UI.Page 
  15. { 
  16.     public CreateHtml() 
  17.     { 
  18.         // 
  19.         //TODO: 在此处添加构造函数逻辑 
  20.         // 
  21.     } 
  22.     ///  
  23.     /// 生成静态页面,生成位置是本项目下 
  24.     ///
 
  25.     /// 请求的URL 
  26.     /// 创建的路径及文件名,路径为相对路径 
  27.     public bool Nei_Create(string strURL, string strRelPath) 
  28.     { 
  29.         string  strFilePage; 
  30.        
  31.         strFilePage = HttpContext.Current.Server.MapPath(strRelPath); 
  32.         StreamWriter sw = null; 
  33.         //获得aspx的静态html 
  34.         try 
  35.         { 
  36.              
  37.             if (File.Exists(strFilePage)) 
  38.             { 
  39.                 File.Delete(strFilePage); 
  40.             } 
  41.             sw = new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding("gb2312")); 
  42.             System.Net.WebRequest wReq = System.Net.WebRequest.Create(strURL); 
  43.             System.Net.WebResponse wResp = wReq.GetResponse(); 
  44.             System.IO.Stream respStream = wResp.GetResponseStream(); 
  45.             System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312")); 
  46.             string strTemp = reader.ReadToEnd(); 
  47.  
  48.             Regex r1 = new Regex("", RegexOptions.IgnoreCase); 
  49.             Regex r2 = new Regex("", RegexOptions.IgnoreCase); 
  50.             Regex r3 = new Regex("", RegexOptions.IgnoreCase); 
  51.  
  52.             Regex r4 = new Regex("
", RegexOptions.IgnoreCase); 
  53.             Regex r5 = new Regex("
"); 
  54.  
  55.             Regex r6 = new Regex("", RegexOptions.IgnoreCase); 
  56.             strTemp = r1.Replace(strTemp, ""); 
  57.             strTemp = r2.Replace(strTemp, ""); 
  58.             strTemp = r3.Replace(strTemp, ""); 
  59.             strTemp = r4.Replace(strTemp, ""); 
  60.             strTemp = r5.Replace(strTemp, ""); 
  61.             strTemp = r6.Replace(strTemp, ""); 
  62.  
  63.             sw.Write(strTemp); 
  64.         } 
  65.         catch (Exception ex) 
  66.         { 
  67.             HttpContext.Current.Response.Write(ex.Message); 
  68.             HttpContext.Current.Response.End(); 
  69.             return false;//生成到出错 
  70.         } 
  71.         finally 
  72.         { 
  73.             sw.Flush(); 
  74.             sw.Close(); 
  75.             sw = null; 
  76.         } 
  77.  
  78.         return true; 
  79.     } 
  80.     ///  
  81.     /// 生成静态页面,生成位置不在本项目下 
  82.     ///
 
  83.     /// 请求的URL 
  84.     /// 创建的路径及文件名,路径为绝对路径 
  85.     public bool Wai_Create(string strURL, string strRelPath,string filename) 
  86.     { 
  87.         string strFilePage; 
  88.         strFilePage = strRelPath + "" + filename; 
  89.         StreamWriter sw = null; 
  90.         //获得aspx的静态html 
  91.         try 
  92.         { 
  93.             if (!Directory.Exists(strRelPath)) 
  94.             { 
  95.                 Directory.CreateDirectory(strRelPath); 
  96.             } 
  97.             if (File.Exists(strFilePage)) 
  98.             { 
  99.                 File.Delete(strFilePage); 
 100.             } 
 101.             sw = new StreamWriter(strFilePage, false, System.Text.Encoding.GetEncoding("gb2312")); 
 102.             System.Net.WebRequest wReq = System.Net.WebRequest.Create(strURL); 
 103.             System.Net.WebResponse wResp = wReq.GetResponse(); 
 104.             System.IO.Stream respStream = wResp.GetResponseStream(); 
 105.             System.IO.StreamReader reader = new System.IO.StreamReader(respStream, System.Text.Encoding.GetEncoding("gb2312")); 
 106.             string strTemp = reader.ReadToEnd(); 
 107.  
 108.             Regex r1 = new Regex("", RegexOptions.IgnoreCase); 
 109.             Regex r2 = new Regex("", RegexOptions.IgnoreCase); 
 110.             Regex r3 = new Regex("", RegexOptions.IgnoreCase); 
 111.  
 112.             Regex r4 = new Regex("
", RegexOptions.IgnoreCase); 
 113.             Regex r5 = new Regex("
"); 
 114.  
 115.             Regex r6 = new Regex("", RegexOptions.IgnoreCase); 
 116.             strTemp = r1.Replace(strTemp, ""); 
 117.             strTemp = r2.Replace(strTemp, ""); 
 118.             strTemp = r3.Replace(strTemp, ""); 
 119.             strTemp = r4.Replace(strTemp, ""); 
 120.             strTemp = r5.Replace(strTemp, ""); 
 121.             strTemp = r6.Replace(strTemp, ""); 
 122.  
 123.             sw.Write(strTemp); 
 124.         } 
 125.         catch (Exception ex) 
 126.         { 
 127.             HttpContext.Current.Response.Write(ex.Message); 
 128.             HttpContext.Current.Response.End(); 
 129.             return false;//生成到出错 
 130.         } 
 131.         finally 
 132.         { 
 133.             sw.Flush(); 
 134.             sw.Close(); 
 135.             sw = null; 
 136.         } 
 137.  
 138.         return true; 
 139.  
 140.     } 
 141.     public void FilePicDelete(string path) 
 142.     { 
 143.         System.IO.FileInfo file = new System.IO.FileInfo(path); 
 144.         if (file.Exists) 
 145.             file.Delete(); 
 146.     } 
 147. } 

调用方法

new CreateHtml().Nei_Create("http://localhost:4032/new5mdn/default.aspx", "default.htm"); 

相关文章

精彩推荐