asp.net(c#)生成静态html页面

来源:互联网 发布:手机软件制作软件下载 编辑:程序博客网 时间:2024/04/29 21:32
生成静态页面的好处就很多了,比如提高访问速度,利于搜索引擎抓取等等。下面这个是利用替换模板中特殊字符的原理写的。供大家交流学习…… 
using System;
using System.Data;
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 Mysqlserver;//数据库操作类
using System.IO;
using System.Text;
namespace NewsAdd
{
    
public partial class Admin_AdminPanel_NewsAdd : System.Web.UI.Page
    
{
        
protected void Page_Load(object sender, EventArgs e)
        
{

        }

        
protected void Button1_Click(object sender, EventArgs e)
        
{
            
string strTitle=Request.Form["Title"].ToString();
            
string strContent=Request.Form["Content"].ToString();
            SqlServerDataBase db 
= new SqlServerDataBase();
            
bool success = db.Insert("insert into inNews(Title,Content)values('" + strTitle + "','" + strContent + "')"null);
            
//if (success)
               
// Message.Text = "添加成功!";
            ///////////////////////////创建当前日期的文件夹开始
            string dir = Server.MapPath("../../"+"NewsFiles/"+DateTime.Now.ToString("yyMMdd"));
            
if (!Directory.Exists(dir))
            
{
                Directory.CreateDirectory(dir);
            }

            
///////////////////////////创建当前日期的文件夹结束
            
            
string[] newContent = new string[5];//定义和html标记数目一致的数组
            StringBuilder strhtml = new StringBuilder();
            
try
            
{
                
//创建StreamReader对象
                using (StreamReader sr = new StreamReader(Server.MapPath("../../" + "NewsFiles/"+ "/template.html"))
                
{
                    String oneline;
                    
//读取指定的HTML文件模板
                    while ((oneline = sr.ReadLine()) != null)
                    
{
                        strhtml.Append(oneline);
                    }

                    sr.Close();
                }

            }

            
catch (Exception err)
            
{
                
//输出异常信息
                Response.Write(err.ToString());
            }

            
//为标记数组赋值
            newContent[0= strTitle;//标题
            newContent[1= "BackColor='#cccfff'";//背景色
            newContent[2= "#ff0000";//字体颜色
            newContent[3= "100px";//字体大小
            newContent[4= strContent;//主要内容

            
//根据上面新的内容生成html文件
            try
            
{
                
//指定要生成的HTML文件
                string fname = Server.MapPath("../../" + "NewsFiles/" + DateTime.Now.ToString("yyMMdd")) + "/" + DateTime.Now.ToString("yyyymmddhhmmss"+ ".html";
                
//替换html模版文件里的标记为新的内容
                for (int i = 0; i < 5; i++)
                
{
                    strhtml.Replace(
"$htmlkey[" + i + "]", newContent[i]);
                }

                
//创建文件信息对象
                FileInfo finfo = new FileInfo(fname);
                
//以打开或者写入的形式创建文件流
                using (FileStream fs = finfo.OpenWrite())
                
{
                    
//根据上面创建的文件流创建写数据流
                    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));
                    
//把新的内容写到创建的HTML页面中
                    sw.WriteLine(strhtml);
                    sw.Flush();
                    sw.Close();
                }

            }

            
catch (Exception err)
            
{
                Response.Write(err.ToString());
            }

        }

}

}

template.html 的主要代码

 

 <html>
       
<head>
              
<title>$htmlkey[0]</title>
              
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
       
</head>
       
<body >
              
<table $htmlkey[1] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0"  bgcolor="#eeeeee" style="border:1px solid #000000">
                 
<tr>
                    
<td width="100%" valign="middle" align="left">
                        
<span style="color: $htmlkey[2];font-size: $htmlkey[3]">$htmlkey[4]</span>
                    
</td>
                 
</tr>
              
</table>
       
</body>
</html>
                                                                    

-------------------------------------

生成静态页面过程中路径问题很重要,一定要设置明白。代码已经加了简单的注释。