在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
做了那么久的动态网页,特别是类似于文章或者是新闻系统,都是按照很传统的方法来做的。但是看到越来越多的网站都使用生成静态网页的方法,于是我也打算使用这个方法实践一下。希望对一些有这方面的需要的朋友提供点帮助。 本人使用IIS6.0+asp.net 2.0制作,并测试成功。 实现效果图: 生成文章以后的页面: 我在输入框里输入了生成ID号从1到10的文章,通过查询数据库得出结果并批量生成静态页面,然后返回根据刚才生成的页面的内容生成了主页index.html。 点击第三个文章,然后进入到查看文章详细内容的页面: 这是我用的是我们公司的网页做模板生成的式样(本文示例并不是这样的,要更好看的样式,请自行设计模板。) 以下是我的实践过程: 首先制作要生成HTML页面的模板: <!-- temp.htm --> <html> <head> <title> $htmlformat[0]</title> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <!-- 式样表自己制作 --> </head> <body> <table> <tr><!--文章导航 --> <td algin=right> $htmlformat[4]</td> </tr> <tr><!--文章的标题 --> <td algin=center> $htmlformat[0]</td> </tr> <tr><!--发表时间 --> <td algin=right> $htmlformat[1]</td> </tr> <tr><!--文章概述 --> <td algin=right> $htmlformat[2]</td> </tr> <tr><!--文章内容 --> <td algin=right> $htmlformat[3]</td> </tr> </table> </body> </html> <!--index_tmp.htm --> <!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> <meta http-equiv="Content-Type" content="text/html; charset=gb2312" /> <title>Index</title> </head> <body> $htmlformat[0] </body> </html> 模板完成后,接下来就是根据文章的ID从数据库中读出相关的内容了。 我的数据库设计如下: Article表 Articles_id 文章id Article 文章内容 Title 标题 Articledatetime 添加时间 Articlesgroup_parent_id 父栏目编号 Articledescription 文章概述 Articlesgroup表 Articlesgroup_id 栏目ID Groupname 栏目名称 Articlesgroup_parent_id 父栏目ID Groupdescription 概述 <!—CreateHTML.aspx --> <%@ Page Language="C#" AutoEventWireup="true" CodeFile="CreateHTML.aspx.cs" Inherits="CreateHTML" %> <!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 runat="server"> <title>生成静态网页</title> </head> <body> <form id="form1" runat="server"> <div> 要生成的文章ID号:<br /> 从<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 到<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /></div> </form> </body> </html>
<!—CreateHTML.aspx.cs --> using System; using System.Data; using System.Data.SqlClient; 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 System.IO; using System.Text; public partial class CreateHTML : System.Web.UI.Page { public string title = "", content = "", datetime = "", desc = "", pages = "", nowPosition = "", positionlist = null, forindex = ""; protected void Page_Load(object sender, EventArgs e) {
} //获取文章内容 private void GetArticle(string articles_id) { SqlConnection conn = new SqlConnection("server=.;uid=sa;pwd=city;database=test;"); string sql = "select * from articles where articles_id=" + articles_id; SqlCommand cmd = new SqlCommand(sql, conn); conn.Open(); SqlDataReader sdr = cmd.ExecuteReader(); if (sdr.Read()) { nowPosition = this.GetPosition(sdr["articlesgroup_parent_id"].ToString(), positionlist); title = sdr["title"].ToString(); content = Server.HtmlDecode(sdr["article"].ToString()); desc = sdr["articledescription"].ToString(); datetime = sdr["articledatetime"].ToString(); forindex += "<a href='article" + articles_id + ".html'>" + sdr["title"] + "</a><br />"; } else { title = ""; content = ""; desc = ""; datetime = ""; } conn.Close(); } //创建文章HTML页 private void Createhtml(string article_id) { this.GetArticle(article_id); if (title != "" && content != "") {//防止生成空数据的页面 string[] format = new string[5];//定义和htmlyem标记数目一致的数组 StringBuilder htmltext = new StringBuilder(); try { using (StreamReader sr = new StreamReader(Server.MapPath("temp.htm"))) { String line; while ((line = sr.ReadLine()) != null) { htmltext.Append(line); } sr.Close(); } } catch { Response.Write("<Script>alert('读取文件错误')</Script>"); }
////---------------------给标记数组赋值------------ format[0] = title; format[1] = datetime; format[2] = desc; format[3] = content; format[4] = nowPosition; ////----------替换htm里的标记为你想加的内容 for (int i = 0; i < 5; i++) {
全部评论
专题导读
上一篇:ASP.NET MVC下使用AngularJs语言(七):Cookie的使用发布时间:2022-07-10下一篇:利用ASP.NET的内置功能抵御Web攻击发布时间:2022-07-10热门推荐
热门话题
阅读排行榜
|
请发表评论