萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> asp.net編程 >> ASP.NET動態生成靜態頁面的實例代碼

ASP.NET動態生成靜態頁面的實例代碼

生成靜態頁有很多好處,可以緩解服務器壓力、方便搜索網站搜索等等,下面介紹一下生成靜態頁的實例代碼,有需要的朋友可以參考一下  

最近突然想把項目中新聞管理模塊做成靜態頁,在網上找到很多很好的文章,在這裡記錄一下,現在只是實現靜態頁面的生成並沒有實現分頁功能。其主要原理就是讀取數據庫的數據然後替換掉靜態模板頁的內容。
首先制作一個模板頁,暫時命名為template.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>
    <title></title>
</head>
<body>
    <div>
        $content$
    </div>
</body>
</html>
然後制作制作一個動態頁面,在這裡我們通過一個按鈕點擊事件來生成靜態頁面。
前台頁面主要代碼(Default.aspx):

復制代碼 代碼如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> 
<!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> 
        <asp:TextBox ID="txtContent" runat="server" Height="179px" TextMode="MultiLine" Width="350px"></asp:TextBox><br /> 
        <br /> 
        <asp:Button ID="btnMake" runat="server" OnClick="btnMake_Click" Text="生成靜態頁" /> 
    </div> 
    </form> 
</body> 
</html> 


後台頁面主要代碼(Default.aspx.cs):

復制代碼 代碼如下:
protected void btnMake_Click(object sender, EventArgs e) 
    { 
        //替換掉模板中的特征字符    
        string mbPath = Server.MapPath("template.htm"); 
        Encoding code = Encoding.GetEncoding("UTF-8"); 
        StreamReader sr = null; 
        StreamWriter sw = null; 
        string str = null; 
        //讀取    
        try 
        { 
            sr = new StreamReader(mbPath, code); 
            str = sr.ReadToEnd(); 
        } 
        catch (Exception ex) 
        { 
            throw ex; 
        } 
        finally 
        { 
            sr.Close(); 
        } 
        //根據時間自動重命名,擴展名也可以自行修改    
        string fileName = DateTime.Now.ToString("yyyyMMddHHmm") + ".htm"; 
        str = str.Replace("$content$", txtContent.Text);//替換content   
        //生成靜態文件    
        try 
        { 
            sw = new StreamWriter(Server.MapPath("~/") + fileName, false, code); 
            sw.Write(str); 
            sw.Flush(); 
        } 
        catch (Exception ex) 
        { 
            throw ex; 
        } 
        finally 
        { 
            sw.Close(); 
            Response.Write("<a href=" + fileName + " mce_href=" + fileName + " target=_blank>" + fileName + "</a>已經生成!"); 
        } 
    } 


當新聞量很大時這樣做勢必會增加服務器的存儲壓力,暫時記錄下來等畢業設計時再考慮增加動態生成靜態頁面,靜態頁面分頁的功能。

copyright © 萬盛學電腦網 all rights reserved