asp.net生成静态页面(静态页面中包括有实时信息)
2010-04-16 15:04
387 查看
asp.net生成静态页面通常会有2中方式,一种是伪静态,一种是事先写好模板然后直接替换内容。对于2种方式的优缺点,在此不讨论,重点是说下第二种方式,在生成静态页面中有一些信息需要实时从数据库读取(比如:在新闻页面,我们会需要一些热点排行,这些热点新闻我们就需要实时的从数据库里边拿到)。
实现方式:通过网站查找和询问,得知就是ajax比较实用。
1.还是要写好生成静态页面的模板页面,但是,在模板页面放置热点新闻的地方,我们可以放一个DIV
<div id="hot">
</div>
同时我们需要写一段JS,用来实时获取数据库信息(注:获取方式通过一个其他ASPX页面获取,然后显示到刚刚定义的DIV中)。
还需要在body的onload事件中调用以上的方法: <body onload="getServerTime();">
静态页面就完成了。
2.现在来看下上边说的ASPX页面代码(该页面作用主要用来获取数据库信息并将信息输出出来)。
hot.aspx前台页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="hot.aspx.cs" Inherits="hostnews" %>
hot.aspx.cs后台代码
获取数据库数据,并输出出来。
3.所有准备工作已经做完,现在来写一段生成静态页面的代码,进行测试。
4.整个过程就算完成了。测试成功。
实现方式:通过网站查找和询问,得知就是ajax比较实用。
1.还是要写好生成静态页面的模板页面,但是,在模板页面放置热点新闻的地方,我们可以放一个DIV
<div id="hot">
</div>
同时我们需要写一段JS,用来实时获取数据库信息(注:获取方式通过一个其他ASPX页面获取,然后显示到刚刚定义的DIV中)。
<mce:script language="javascript"><!-- var request = false; //实例化XMLHttpRequest function createXMLHttpRequest() { try { request = new ActivexObject("Msxml2.XMLHTTP"); } catch(e1) { try { request = new ActivexObject("Microsoft.XMLHTTP"); } catch(e2) { request = false; } } if(!request && typeof XMLHttpRequest != 'undefined') { //非IE内核浏览器实例化XMLHttpRequest的方法 request = new XMLHttpRequest(); } } //发送客户端请求的方法 function getServerTime() { //调用上面的方法实例化XMLHttpRequest createXMLHttpRequest(); //escape()对特殊字符进行转义 var url = "../hot.aspx"; //alert(url); //通过GET的方式打开请求,第三个参数ture表示异步发送请求,false表示同步 request.open("GET",url,true); //当request的等待状态发生变化时要执行的客户端方法 request.onreadystatechange=update; //因为在url中已经附带了参数,这里的参数为null request.send(null); } //当接收到服务器的响应之后执行的客户端方法 function update() { //状态为4表示得到了服务器的正确响应 if(request.readyState == 4) { document.getElementById("hot").innerHTML = request.responseText; } } // --></mce:script>
还需要在body的onload事件中调用以上的方法: <body onload="getServerTime();">
静态页面就完成了。
2.现在来看下上边说的ASPX页面代码(该页面作用主要用来获取数据库信息并将信息输出出来)。
hot.aspx前台页面
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="hot.aspx.cs" Inherits="hostnews" %>
hot.aspx.cs后台代码
string sql = ""; protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { DataBindyx(); } } public void DataBindyx() { StringBuilder result = new StringBuilder(); sql = "select top 12 * from [T_News] where newstypeid=16 order by id desc"; DataView dv = DBFun.GetDataView(sql); DataTable dt = DBFun.dataTable(sql); if (dt.Rows.Count > 0) { result.Append("<table cellpadding='0' cellspacing='0' border='0'>"); for (int i = 0; i < dt.Rows.Count; i++) { result.Append("<tr height=22>"); result.Append("<td width='29' align='center' style="border-bottom: 1px dotted #ccc; " mce_style="border-bottom: 1px dotted #ccc; ">"); result.Append("<img src="../images/arrow3.gif" mce_src="images/arrow3.gif" width='29' height='11' /></td>"); result.Append("<td width='200' align='left' style="border-bottom: 1px dotted #ccc" mce_style="border-bottom: 1px dotted #ccc">"); result.Append("<a class='newslink' target='_blank' href=" +dt.Rows[i][" mce_href=" +dt.Rows[i]["link"].ToString () + ">" + GetShortTitle(dt.Rows[i]["title"].ToString (),11) + "</a></td></tr>"); } result.Append("<tr height='12'><td colspan='2'></td></tr>"); result.Append("</table>"); Response.Write(result.ToString()); } } public string GetShortTitle(string str_title, int str_lenth) { if (str_title.Length > str_lenth) { return str_title.Substring(0, str_lenth) + "..."; } else { return str_title; } }
获取数据库数据,并输出出来。
3.所有准备工作已经做完,现在来写一段生成静态页面的代码,进行测试。
public static bool WriteFile(string filename, string title, string addtime, string content,string newstype) { string path = HttpContext.Current.Server.MapPath("../news");//文件输出目录 Encoding code = Encoding.GetEncoding("gb2312"); // 读取模板文件 string temp = HttpContext.Current.Server.MapPath("template/news.htm");//模版文件 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(); } finally { sr.Close(); } //静态文件名 // 替换内容 // 这时,模板文件已经读入到名称为str的变量中了 str = str.Replace("newstitle", title ); str = str.Replace("newsaddtime", addtime ); str = str.Replace("newscontent", content); // 写文件 try { sw = new StreamWriter(path + "//" + filename, 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; }
4.整个过程就算完成了。测试成功。
相关文章推荐
- 事件驱动asp.net自动生成静态页面模板解决方法——生成静态页面
- asp.net获取当前页面源码并生成静态页面
- ASP.NET生成静态HTML页面并分别按年月目录存放[来自:中国站长站]
- ASP.NET生成静态页面
- ASP.NET分类信息站全站制作视频教程4(AJAX+SQLITE+生成静态HTML)
- ASP.NET 动态转静态页面的两种方法总结 - 动态页面转换成HTML静态页面方法
- ASP.NET生成静态页面
- asp.net生成html静态页面[转]
- ASP.Net生成静态HTML页面{转2}
- asp.net中关于静态页面生成的代码实例
- 使用ASP.NET模板生成HTML静态页面的五种方案
- asp.net 把单个页面生成静态页面及小知识
- ASP.NET生成静态HTML页面并分别按年月目录存放
- [导入]ASP.NET分类信息站全站制作视频教程1(AJAX+SQLITE+生成静态HTML)
- 巧用asp.net(1):自动生成页面头部信息
- 关于ASP.NET MVC生成纯静态后如何不再走路由直接访问静态页面
- ASP.Net生成静态页面 C# 静态页面
- C#(asp.net)根据静态模板生成静态(html)页面
- asp.net生成静态页面之简化版
- asp.net(c#)生成静态html页面