你的位置:首页 > ASP.net教程

[ASP.net教程]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="生成首页失败!"; 
  } 
  }

  新建文件夹NewsHtml,生成html文件放在里面

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

  增加一个模板文件

<html <head> 
    <title>无标题页</title> 
</head> 
<body> 
    <table border="1" cellpadding="0" cellspacing="0" > 
        <tr> 
            <td align="center" colspan="2"> 
                @Title</td> 
</tr> 
        <tr> 
            <td align="center" colspan="2"> 
                发布人:@UserName &nbsp; &nbsp; 发布时间:@PubTime &nbsp; &nbsp;&nbsp; 新闻类别:@NewsKInd</td> 
        </tr> 
        <tr> 
            <td colspan="2"> 
                @NewsBody</td></tr><tr> 
  <td >  
</td><td > 
</td></tr></table></body></html>

转载自:http://www.aspnetjia.com