asp.net生成静态网页,转载

现在做程序都要将动态的页面转换成静态页面,今天教大家在ASP.NET 中实现静态页面的生成方法。

using System;

  using System.Data;

  using System.Configuration;

  using System.Web;

  using System.Web.Security;

  using System.Web.UI;

  using System.Web.UI.WebControls;

  using System.Web.UI.WebControls.WebParts;

  using System.Web.UI.HtmlControls;

  using System.IO;

  using System.Text;

  ///

  /// WriteFile 的摘要说明

  ///

  public class WriteFile

  {

  public WriteFile()

  {

  }

  public static bool createHtml(string[] strnewsHtml,string[] stroldHtml,string strModeFilePath,string strPath)

  {

  bool flag = false;

  StreamReader sr = null;

  StreamWriter sw = null;

  string filepath = HttpContext.Current.Server.MapPath(strModeFilePath);

  Encoding code = Encoding.GetEncoding("gb2312");

  string s = string.Empty;

  try

  {

  sr = new StreamReader(filepath,code);

  s = sr.ReadToEnd();

  }

  catch (Exception ex)

  {

  throw ex;

  }

  finally

  {

  sr.Close();

  }

  try

  {

  for (int i = 0; i < strnewsHtml.Length; i )

  {

  s = s.Replace(stroldHtml[i], strnewsHtml[i]);

  }

  sw = new StreamWriter(HttpContext.Current.Server.MapPath(strPath), false, code);

  sw.Write(s);

  flag = true;

  }

  catch (Exception ex)

  {

  flag = false;

  throw ex;

  }

  finally

  {

  sw.Flush();

  sw.Close();

  }

  return flag;

  }

  public static bool UpdateHtmlPage(string[] strNewsHtml, string[] strStartHtml, string[] strEndHtml, string strHtml)

  {

  bool Flage = false;

  StreamReader ReaderFile = null;

  StreamWriter WrirteFile = null;

  string FilePath = HttpContext.Current.Server.MapPath(strHtml);

  Encoding Code = Encoding.GetEncoding("gb2312");

  string strFile = string.Empty;

  try

  {

  ReaderFile = new StreamReader(FilePath, Code);

  strFile = ReaderFile.ReadToEnd();

  }

  catch (Exception ex)

  {

  throw ex;

  }

  finally

  {

  ReaderFile.Close();

  }

  try

  {

  int intLengTh = strNewsHtml.Length;

  for (int i = 0; i < intLengTh; i )

  {

  int intStart = strFile.IndexOf(strStartHtml[i]) strStartHtml[i].Length;

  int intEnd = strFile.IndexOf(strEndHtml[i]);

  string strOldHtml = strFile.Substring(intStart, intEnd - intStart);

  strFile = strFile.Replace(strOldHtml, strNewsHtml[i]);

  }

  WrirteFile = new StreamWriter(FilePath, false, Code);

  WrirteFile.Write(strFile);

  Flage = true;

  }

  catch (Exception ex)

  {

  throw ex;

  }

  finally

  {

  WrirteFile.Flush();

  WrirteFile.Close();

  }

  return Flage;

  }

  }

  调用公共类:

  ----------------------------------------------------------------------------

  protected void Button2_Click(object sender, EventArgs e)

  {

  string NewsTitle = this.TextBox1.Text;

  string NewsKindName = this.DropDownList1.SelectedItem.Text;

  string NewsBody = this.WebEditor1.Text;

  DateTime PubTime = DateTime.Now;

  string UserName = Session["UserName"].ToString();

  Response.Write(NewsKindName);

  string[] strNewsHtml = new string[] { NewsTitle, NewsKindName, NewsBody, PubTime.ToString(), UserName };

  string[] strOldHtml = new string[] { "@Title", "@NewsKInd", "@NewsBody", "@PubTime", "@UserName" };

  string strFileName = DateTime.Now.ToString("ddhhmmss") ".html";

  string strFilePath = string.Format("NewsHtml/{0}", strFileName);

  try

  {

  if (WriteFile.createHtml(strNewsHtml, strOldHtml, "mode.htm", strFilePath))

  {

  this.Label1.Text = "生成成功!";

  }

  else

  {

  this.Label1.Text = "生成失败!";

  }

  }

  catch

  {

  this.Label1.Text = "生成失败!";

  }

  }

  protected void Button3_Click(object sender, EventArgs e)

  {

  string[] strNewsHtml=new string[]{"到此一游!"};

  string[] strStartHtml=new string[]{""};

  string[] strEndHtml=new string[]{""};

  if (WriteFile.UpdateHtmlPage(strNewsHtml, strStartHtml, strEndHtml, "NewsHtml/02011139.html"))

  {

  this.Label1.Text="生成首页成功!";

  }

  else

  {

  this.Label1.Text="生成首页失败!";

  }

  }

转自:http://www.niuc.net/post/1389/