今天看了看asp.net静态生成的视频http://v.youku.com/v_show/id_XMjI3NDk5MzQw.html
决定自己打出来留着以后用首先、建一个Default.aspx
Default.aspx 页面
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table><tr><td>编号</td><td>名称</td><td></td></tr></HeaderTemplate>
<ItemTemplate><tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("id","~/html/{0}.html")%>'>查看详细</asp:HyperLink></td></tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
<asp:Button ID="Button1" runat="server" Text="生成静态页面" onclick="Button1_Click" />
Default.aspx.cs页面
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using System.Data.OleDb;
using System.IO; //File空间引用
public partial class _Default : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
Bind();
}
}
/// <summary>
/// 绑定数据库
/// </summary>
public void Bind()
{
string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
OleDbConnection con = new OleDbConnection(conn);
string str = "select * from news";
OleDbCommand com = new OleDbCommand(str, con);
DataSet ds = new DataSet();
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(com);
da.Fill(ds);
con.Close();
//绑定到Repeater上
Repeater1.DataSource = ds;
Repeater1.DataBind();
}
protected void Button1_Click(object sender, EventArgs e)
{
//<!--链接字符串
string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
OleDbConnection con = new OleDbConnection(conn);
string tr = "select * from news";
OleDbCommand com = new OleDbCommand(tr, con);
DataSet ds = new DataSet();
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(com);
da.Fill(ds);
con.Close();
//-->
string path =Server.MapPath("~/html/"); //带读取html模版的路径
string temp = File.ReadAllText(path + "HTMLPage.htm",System.Text.Encoding.UTF8); //读取模版文件所有内容,和编码
foreach (DataRow dr in ds.Tables[0].Rows) //循环读取ds的内容
{
string content = temp.Replace("$name$", dr["name"].ToString()); //替换模板页内容 content现在存的是html代码
content = content.Replace("$time$", dr["time"].ToString());
content = content.Replace("$body$", dr["body"].ToString());
File.WriteAllText(path + dr["id"] + ".html", content, System.Text.Encoding.UTF8); //在制定位置创建文件,内容,编码
}
}
}
HTMLPage.htm html模板页
<html>
<head runat="server">
<title>无标题</title>
</head>
<body>
<form>
<!--这是静态模板-->
<div>标题:$name$
<br />
时间:$time$<br />
<hr />
$body$
</div>
</form>
</body>
</html>
OK 点击生成静态页面按钮、、就可以看到了、、具体样式 具体添加
带Repeater aspx页
<asp:Repeater ID="Repeater1" runat="server">
<HeaderTemplate><table><tr><td>编号</td><td>名称</td><td></td></tr></HeaderTemplate>
<ItemTemplate><tr><td><%#Eval("id") %></td><td><%#Eval("name") %></td><td>
<asp:HyperLink ID="HyperLink1" runat="server" NavigateUrl='<%#Eval("id","~/html/{0}.html")%>'>查看详细</asp:HyperLink></td></tr></ItemTemplate>
<FooterTemplate></table></FooterTemplate>
</asp:Repeater>
点击生成按钮
protected void Button2_Click(object sender, EventArgs e)
{
//<!--链接字符串
string conn = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=" + HttpContext.Current.Server.MapPath("~/App_Data/database.mdb");
OleDbConnection con = new OleDbConnection(conn);
string tr = "select * from news";
OleDbCommand com = new OleDbCommand(tr, con);
DataSet ds = new DataSet();
con.Open();
OleDbDataAdapter da = new OleDbDataAdapter(com);
da.Fill(ds);
con.Close();
//-->
string path = Server.MapPath("~/html/"); //带读取html模版的路径
string temp = File.ReadAllText(path + "HTMLPage2.htm", System.Text.Encoding.UTF8); //读取模版文件所有内容,和编码
string body = "<table><tr><td>编号</td><td>名称</td><td></td></tr>";
foreach (DataRow dr in ds.Tables[0].Rows)
{
body += "<tr><td>"
+ dr["id"] + "</td><td>"
+ dr["name"] + "</td><td><a href='../html/"
+ dr["id"] + ".html'>查看详细</a></td></tr>";
}
body+="</table>";
string cont = temp.Replace("$body$", body);
File.WriteAllText(path + "Def.html", cont, System.Text.Encoding.UTF8);
}
}
htm模板
<html>
<head>
<title></title>
</head>
<body>
$body$
</body>
</html>