Asp.Net生成静态页面的实现方法

  

复制代码 代码如下:

  using System;

  using System.Data;

  using System.Configuration;

  using System.Collections;

  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 Mysqlserver;//数据库操作类

  using System.IO;

  using System.Text;

  namespace NewsAdd

  {

  public partial class Admin_AdminPanel_NewsAdd : System.Web.UI.Page

  {

  protected void Page_Load(object sender, EventArgs e)

  {

  }

  protected void Button1_Click(object sender, EventArgs e)

  {

  string strTitle=Request.Form["Title"].ToString();

  string strContent=Request.Form["Content"].ToString();

  SqlServerDataBase db = new SqlServerDataBase();

  bool success = db.Insert("insert into inNews(Title,Content)values('" + strTitle + "','" + strContent + "')", null);

  //if (success)

  // Message.Text = "添加成功!";

  /**////////////////////////////创建当前日期的文件夹开始

  string dir = Server.MapPath("../../"+"NewsFiles/"+DateTime.Now.ToString("yyMMdd"));

  if (!Directory.Exists(dir))

  {

  Directory.CreateDirectory(dir);

  }

  /**////////////////////////////创建当前日期的文件夹结束

  string[] newContent = new string[5];//定义和html标记数目一致的数组

  StringBuilder strhtml = new StringBuilder();

  try

  {

  //创建StreamReader对象

  using (StreamReader sr = new StreamReader(Server.MapPath("../../" + "NewsFiles/") + "/template.html"))

  {

  String oneline;

  //读取指定的HTML文件模板

  while ((oneline = sr.ReadLine()) != null)

  {

  strhtml.Append(oneline);

  }

  sr.Close();

  }

  }

  catch (Exception err)

  {

  //输出异常信息

  Response.Write(err.ToString());

  }

  //为标记数组赋值

  newContent[0] = strTitle;//标题

  newContent[1] = "BackColor='#cccfff'";//背景色

  newContent[2] = "#ff0000";//字体颜色

  newContent[3] = "100px";//字体大小

  newContent[4] = strContent;//主要内容

  //根据上面新的内容生成html文件

  try

  {

  //指定要生成的HTML文件

  string fname = Server.MapPath("../../" + "NewsFiles/" + DateTime.Now.ToString("yyMMdd")) + "/" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";

  //替换html模版文件里的标记为新的内容

  for (int i = 0; i < 5; i++)

  {

  strhtml.Replace("$htmlkey[" + i + "]", newContent[i]);

  }

  //创建文件信息对象

  FileInfo finfo = new FileInfo(fname);

  //以打开或者写入的形式创建文件流

  using (FileStream fs = finfo.OpenWrite())

  {

  //根据上面创建的文件流创建写数据流

  StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));

  //把新的内容写到创建的HTML页面中

  sw.WriteLine(strhtml);

  sw.Flush();

  sw.Close();

  }

  }

  catch (Exception err)

  {

  Response.Write(err.ToString());

  }

  }

  }

  }

  template.html 代码

  

复制代码 代码如下:

  <html>

  <head>

  <title>$htmlkey[0]</title>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  </head>

  <body >

  <table $htmlkey[1] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0"  bgcolor="#eeeeee" style="border:1px solid #000000" mce_style="border:1px solid #000000">

  <tr>

  <td width="100%" valign="middle" align="left">

  <span style="color: $htmlkey[2];font-size: $htmlkey[3]" mce_style="color: $htmlkey[2];font-size: $htmlkey[3]">$htmlkey[4]</span>

  </td>

  </tr>

  </table>

  </body>

  </html>