现在做程序都要将动态的页面转换成静态页面,今天教大家在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 xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>无标题页</title>
</head>
<body>
<table border="1" cellpadding="0" cellspacing="0" style="width: 522px; height: 338px">
<tr>
<td align="center" colspan="2">
@Title</td>
</tr>
<tr>
<td align="center" colspan="2">
发布人:@UserName 发布时间:@PubTime 新闻类别:@NewsKInd</td>
</tr>
<tr>
<td colspan="2">
@NewsBody</td></tr><tr>
<td style="WIDTH: 100px">
</td><td style="WIDTH: 100px" >
</td></tr></table></body></html>