• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

asp.net批量生成静态网页

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

做了那么久的动态网页,特别是类似于文章或者是新闻系统,都是按照很传统的方法来做的。但是看到越来越多的网站都使用生成静态网页的方法,于是我也打算使用这个方法实践一下。希望对一些有这方面的需要的朋友提供点帮助。

 

本人使用IIS6.0+asp.net 2.0制作,并测试成功。

 

实现效果图:

生成文章以后的页面:

我在输入框里输入了生成ID号从110的文章,通过查询数据库得出结果并批量生成静态页面,然后返回根据刚才生成的页面的内容生成了主页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++)

            {


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
ASP.NET MVC下使用AngularJs语言(七):Cookie的使用发布时间:2022-07-10
下一篇:
利用ASP.NET的内置功能抵御Web攻击发布时间:2022-07-10
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap