用替换模板的方法模板页:index。html<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<style type="text/css">
ul
{
list-style-type:none;
}
</style>
</head>
<body>
<div>体育</div>
<div>#tiyu</div>
<div>娱乐</div>
<div>#yule</div>
</body>
</html>执行页面:default.aspx。cs protected void Button1_Click(object sender, EventArgs e)
{
string sql = "select top 5 * from [tiyu] order by id desc";
string sql1 = "select top 5 * from [yule] order by id desc";
SqlDataReader sdr = dr(sql);
SqlDataReader sdr1 = dr(sql1);
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
while (sdr.Read())
{
sb.Append("<li>"+sdr.GetString(1)+"</li>");
}
sb.Append("</ul>"); StringBuilder sb1 = new StringBuilder();
sb1.Append("<ul>");
while (sdr1.Read())
{
sb1.Append("<li>" + sdr1.GetString(1) + "</li>");
}
sb1.Append("</ul>");
StreamReader sr=new StreamReader(Server.MapPath("index.htm"),Encoding.GetEncoding("gb2312"));
string str = sr.ReadToEnd();
str = str.Replace("#tiyu", sb.ToString());
str = str.Replace("#yule", sb1.ToString());
StreamWriter sw = new StreamWriter(Server.MapPath("default.html"),false, Encoding.GetEncoding("gb2312"));
sw.Write(str);
sw.Flush();
}
public SqlDataReader dr(string sql)
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["shuju"]);
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
1、我的思路是用#tiyu和#娱乐 替换,button单击以后循环出体育和娱乐的新闻列表,然后再替换掉#字符,这种方法我试验是可以生成的,只是不知道这种方法对于首页有相当多的栏目来说效率会不会低?
2、如果在单击button除了生成首页静态页,能不能同时也将所有子页面的相关栏目也重新生成为静态页,这样的话服务器吃的消吗?
<head>
<title></title>
<style type="text/css">
ul
{
list-style-type:none;
}
</style>
</head>
<body>
<div>体育</div>
<div>#tiyu</div>
<div>娱乐</div>
<div>#yule</div>
</body>
</html>执行页面:default.aspx。cs protected void Button1_Click(object sender, EventArgs e)
{
string sql = "select top 5 * from [tiyu] order by id desc";
string sql1 = "select top 5 * from [yule] order by id desc";
SqlDataReader sdr = dr(sql);
SqlDataReader sdr1 = dr(sql1);
StringBuilder sb = new StringBuilder();
sb.Append("<ul>");
while (sdr.Read())
{
sb.Append("<li>"+sdr.GetString(1)+"</li>");
}
sb.Append("</ul>"); StringBuilder sb1 = new StringBuilder();
sb1.Append("<ul>");
while (sdr1.Read())
{
sb1.Append("<li>" + sdr1.GetString(1) + "</li>");
}
sb1.Append("</ul>");
StreamReader sr=new StreamReader(Server.MapPath("index.htm"),Encoding.GetEncoding("gb2312"));
string str = sr.ReadToEnd();
str = str.Replace("#tiyu", sb.ToString());
str = str.Replace("#yule", sb1.ToString());
StreamWriter sw = new StreamWriter(Server.MapPath("default.html"),false, Encoding.GetEncoding("gb2312"));
sw.Write(str);
sw.Flush();
}
public SqlDataReader dr(string sql)
{
SqlConnection con = new SqlConnection(ConfigurationManager.AppSettings["shuju"]);
con.Open();
SqlCommand cmd = new SqlCommand(sql,con);
SqlDataReader sdr = cmd.ExecuteReader();
return sdr;
}
1、我的思路是用#tiyu和#娱乐 替换,button单击以后循环出体育和娱乐的新闻列表,然后再替换掉#字符,这种方法我试验是可以生成的,只是不知道这种方法对于首页有相当多的栏目来说效率会不会低?
2、如果在单击button除了生成首页静态页,能不能同时也将所有子页面的相关栏目也重新生成为静态页,这样的话服务器吃的消吗?
解决方案 »
- 在BLL中添加Model引用导致DAL引用中的类不可用(提示没引用DAL。。)怎么回事啊?
- 如何在webservice中使用ResolveUrl
- 在ASP.NET作的网站中怎样上传图文混排的新闻?
- 请问如何动态加载复合自定义控件?
- NTFS分区文件遍历的结果和实际不一致,怎么回事?
- 我想将一个字符串从一页传到另一页,而且不想使用Get方法,想使用Post方法,怎么做呢?谢谢
- 做手机web应用的问题 急 求方案
- ASP.Net 传递参数,对SQL Database 插入一条记录,应该是一个string, 到表里只有string的首字母。 ???
- 救我一次吧
- 动态生成button,如何使其象用拖拉生成的button一样?
- 怎样在BulletedList的click事件里改写被点击项的html标签
- 关于数据库检索
public static bool WriteFile(string strText)
{
string path = HttpContext.Current.Server.MapPath("Html/");
System.Text.Encoding code = System.Text.Encoding.GetEncoding("gb2312");
string temp = HttpContext.Current.Server.MapPath("Html/A.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 htmlfilename = DateTime.Now.ToString("yyyyMMddHHmmss") + ".html";
//通过正则获取标签内容实现内容替换
try
{
sw = new StreamWriter(path + htmlfilename, false, code);
sw.Write(str);
sw.Flush();
}
catch (Exception ex)
{
HttpContext.Current.Response.Write(ex.Message);
HttpContext.Current.Response.End();
}
finally
{
sw.Close();
}
return true;
}
或通过属性名称,添加到集合,再遍历替换标签
<div><%=tiyu()%></div>asp.net本来就有字符串替换功能!而且不限于字符串变量,实际上可以是很复杂的可执行代码,甚至循环语句等等。那些不懂asp.net的人从几角旮旯(在asp、jsp出现之前才用到的地方)里淘来了字符串替换方法,竟然被csdn上“发扬光大”了?!
你说的方法生成静态页确实方便,我也用过,用利用WebClient和WebRequest类获得网页源代码就实现过,效率也比较高。但用模板的一个好处是让不太懂编程的人(如美工)也可以参与进来。他们只要把定义好的标签放到想放的位置就可以了。
Server.Execute(pageUrl, wr); //你可以使用第三个参数传递页面的更多初始数据
File.WriteAllText(Server.MapPath(htmlUrl), wr.ToString());