您的位置:首页 > Web前端 > HTML

asp.net(c#)生成静态html页面

2007-03-20 11:33 861 查看
生成静态页面的好处就很多了,比如提高访问速度,利于搜索引擎抓取等等。下面这个是利用替换模板中特殊字符的原理写的。供大家交流学习……


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">


<tr>


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


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


</td>


</tr>


</table>


</body>


</html>





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

生成静态页面过程中路径问题很重要,一定要设置明白。代码已经加了简单的注释。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: