1.模板法废话不说,就是经典的实现方法,直接放代码:
using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Drawing; using System.Web; using System.Web.SessionState; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.HtmlControls; using System.IO; using System.Text; namespace menutest { /// <summary> /// Conn 的摘要说明。 /// </summary> // by kyo // 此类是生成静态网页的小程序 public class Conn { public Conn() { } public static bool WriteFile(string strText,string strContent,string strAuthor) { string path = HttpContext.Current.Server.MapPath("/menutest/"); Encoding code = Encoding.GetEncoding("gb2312"); // 读取模板文件 string temp = HttpContext.Current.Server.MapPath("/menutest/news/text.html"); StreamReader sr=null; StreamWriter sw=null; string str=""; try { sr = new StreamReader(temp,code); str = sr.ReadToEnd(); // 读取文件 } catch(Exception exp) { HttpContext.Current.Response.Write(exp.Message); HttpContext.Current.Response.End(); sr.Close(); } //string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html"; string htmlfilename="kyo.html"; // 替换内容 // 这时,模板文件已经读入到名称为str的变量中了 str = str.Replace("ShowArticle",strText); //模板页中的ShowArticle str = str.Replace("biaoti",strText); str = str.Replace("content",strContent); str = str.Replace("author",strAuthor); // 写文件 try { sw = new StreamWriter(path + htmlfilename , false, code); sw.Write(str); sw.Flush(); } catch(Exception ex) { HttpContext.Current.Response.Write(ex.Message); HttpContext.Current.Response.End(); } finally { sw.Close(); } return true; } } } //原理是利用System.IO中的类读写模板文件,然后用Replace替换掉模板中的标签,写入静态html.2.重写Render法
函数重载了Page.Render函数,作用是把页面的HTML文本截下来,保存到文件里,进一步的可以去看一下ASP.Net页面生命过程。
代码如下
protected override void Render(HtmlTextWriter writer) { System.IO.StringWriter html = new System.IO.StringWriter(); System.Web.UI.HtmlTextWriter tw = new HtmlTextWriter(html); base.Render(tw); System.IO.StreamWriter sw = new System.IO.StreamWriter(Server.MapPath("index.html"), false, System.Text.Encoding.Default); sw.Write(html.ToString()); sw.Close(); tw.Close(); Response.Write("页面生成成功!"); }
3.模板法
在ASP.NET 2.0中,有时候需要对ASP.NET生成的HTML代码进行处理,或者是保存成静态文件。ASP.NET 提供了直接将请求保存成文件的方法:HttpRequest.SaveAs方法。