ASP.net生成静态页面
1、建立Conn.cs类文件
using System;
using System.Text;
using System.Web;
using System.IO;
namespace myservers
{
/// <summary>
/// Conn 的摘要说明。
/// </summary>
public class Conn
{
public Conn()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public string WriteFile(string strText,string strContent,string strAuthor)
{
string path = HttpContext.Current.Server.MapPath("/myservers/news");//取得新闻当前文件夹
DateTime year = DateTime.Now;
string years = Convert.ToString(year.Year);//当前年
string month = Convert.ToString(year.Month);//当前月
string CurrentPath = path + "/" + years; //设置当前年目录
if(Directory.Exists(CurrentPath)==false) //若该目录不存在,创建该目录
Directory.CreateDirectory(CurrentPath);
string CurrentMonthPath = CurrentPath + "/" + month;//设置当前月目录
if(Directory.Exists(CurrentMonthPath)==false) //若该目录不存在,创建该目录
Directory.CreateDirectory(CurrentMonthPath);
Encoding code = Encoding.GetEncoding("gb2312");//编码
// 读取模板文件
string temp = HttpContext.Current.Server.MapPath("/myservers/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 datepath = DateTime.Now.ToString("ddHHmmss")+".html";
string htmlfilename=CurrentMonthPath +"/" + datepath ;
// 替换内容
// 这时,模板文件已经读入到名称为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(htmlfilename,false,code);
sw.Write(str);
sw.Flush();
}
catch(Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
}
finally
{
sw.Close();
}
string path1 = "news/" + years + "/" + month + "/" + datepath;
return path1;
}
}
}
2.AddNews.aspx文件
private void Button1_Click(object sender, System.EventArgs e)
{
string content = Server.HtmlEncode(this.Content.Value.Trim());
Conn Hover = new Conn();
try
{
string htmlpath = Hover.WriteFile(this.Title.Text.ToString(),Server.HtmlDecode(this.Content.Value).ToString(),this.Author.Text.ToString());
this.AddData(htmlpath);
Response.Write(htmlpath);
}
catch
{
Response.Write("生成HTML出错!");
}
}
protected void AddData(string mypath)
{
string conn = "server=localhost;uid=sa;pwd=963100;database=mis";
string sqlstr = "insert into news (name,title,content,author,path) values ('"+this.Title.Text.ToString()+"','"+this.Title.Text.ToString()+"','"+this.Content.Value+"','"+this.Author.Text.ToString()+"','"+mypath+"')";
SqlConnection myconn = new SqlConnection(conn);
myconn.Open();
SqlCommand mycommand = new SqlCommand(sqlstr,myconn);
int i = mycommand.ExecuteNonQuery();
}
3、添加模板text.html文件
<head>ShowArticle</head>
<body>
title<br>
content<br>
author
</body>