熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

利用ASP.NET動態生成HTML頁面

2013-11-13 09:44:35  來源: .NET編程 
    思路
   
    利用如DwMx這樣的工具生成html格式的模板在需要添加格式的地方加入特殊標記(如$htmlformat$)動態生成文件時利用代碼讀取此模板然後獲得前台輸入的內容添加到此模板的標記位置中生成新文件名後寫入磁盤寫入後再向數據庫中寫入相關數據
   
    使用後台代碼硬編碼Html文件可以使用HtmlTextWriter類來寫html文件
   
    優點
   
    可以建立非常復雜的頁面利用包含js文件的方法在js文件內加入documentwrite()方法可以在所有頁面內加入如頁面頭廣告等內容
   
    靜態html文件利用MS Windows的Index Server可以建立全文搜索引擎利用可以以DataTable的方式得到搜索結果而Win的Index服務無法查找xml文件的內容如果包括了數據庫搜索與Index索引雙重查找那麼此搜索功能將非常強大
   
    節省服務器的負荷請求一個靜態的html文件比一個aspx文件服務器資源節省許多
   
    缺點
   
    思路二 如果用硬編碼的方式工作量非常大需要非常多的html代碼調試困難而且使用硬編碼生成的html樣式無法修改如果網站更換樣式那麼必須得重新編碼給後期帶來巨大的工作量
   
    因此這裡采用的是第一種思路
   
    示列代碼
   
    定義()html模板頁面
   
    <html>
   
    <head>
   
    <title></title>
   
    <meta httpequiv=ContentType content=text/html; charset=gb>
   
    </head>
   
    <body >
   
    <table $htmlformat[] height=% border= width=% cellpadding= cellspacing= bgcolor=#eeeeee >
   
    <tr>
   
    <td width=% valign=middle align=left>
   
    <span >$htmlformat[]</span>
   
    </td>
   
    </tr>
   
    </table>
   
    </body>
   
    </html>
   
    代碼
   
    //讀html模板頁面到stringbuilder對象裡
   
    string[] format=new string[];//定義和htmlyem標記數目一致的數組
   
    StringBuilder htmltext=new StringBuilder()
   
    try
   
    {
   
    using (StreamReader sr = new StreamReader(存放模板頁面的路徑和頁面名))
   
    {
   
    String line;
   
    while ((line = srReadLine()) != null)
   
    {
   
    htmltextAppend(line)
   
    }
   
    srClose()
   
    }
   
    }
   
    catch
   
    {
   
    ResponseWrite(<Script>alert(讀取文件錯誤)</Script>
   
    }
   
    //給標記數組賦值
   
    format[]=background=\bgjpg\;//背景圖片
   
    format[]= #;//字體顏色
   
    format[]=px;//字體大小
   
    format[]= <marquee>生成的模板html頁面</marquee>;//文字說明
   
    //替換htm裡的標記為你想加的內容
   
    for(int i=;i<;i++)
   
    {
   
    htmltextReplace($htmlformat[+i+]format[i])
   
    }
   
    //生成htm文件――
   
    try
   
    {
   
    using(StreamWriter sw=new StreamWriter(存放路徑和頁面名falseSystemTextEncodingGetEncoding(GB)))
   
    {
   
    swWriteLine(htmltext)
   
    swFlush()
   
    swClose()
   
    }
   
    }
   
    catch
   
    {
   
    ResponseWrite (The file could not be wirte:
   
    }
   
    小結
   
    用此方法可以方便的生成html文件程序使用了是循環替換因此對需替換大量元素的模板速度非常快
From:http://tw.wingwit.com/Article/program/net/201311/11467.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.