ASP.NET生成静态页

 

ASP.NET生成静态页

核心技术:
HTMLPage文件夹,ModelHTML.htm文件中的ArticleTitle,ArticleContent都是要替换的区域
WriteFile(dr["ArticleTitle"].ToString(), dr["ArticleContent"].ToString(), dr["ID"].ToString());


1.前台
<head runat="server">
    <title>ASP.NET生成静态网页</title>
</head>
<body style="text-align: center">
    <form id="form1" runat="server">
    <div style="text-align: center">
        <table style="width: 601px" cellpadding="0" cellspacing="0">
            <tr>
                <td colspan="3" style="height: 85px; text-align: center;"><strong>ASP.NET生成静态网页</strong></td>
            </tr>
            <tr>
                <td colspan="3" rowspan="2" style="vertical-align: top; height: 67px; text-align: center">
                    <asp:DataList ID="DataList1" runat="server" BackColor="White" BorderColor="#E7E7FF"
                        BorderStyle="None" BorderWidth="1px" CellPadding="3" GridLines="Horizontal" OnItemCommand="DataList1_ItemCommand">
                        <FooterStyle BackColor="#B5C7DE" ForeColor="#4A3C8C" />
                        <SelectedItemStyle BackColor="#738A9C" Font-Bold="True" ForeColor="#F7F7F7" />
                        <ItemTemplate>
                            <table cellpadding="0" cellspacing="0" style="font-size: 9pt; width: 563px">
                                <tr>
                                    <td style="width: 30px; height: 17px">ID:</td>
                                    <td style="width: 60px; height: 17px"><%#DataBinder.Eval(Container.DataItem,"ID") %></td>
                                    <td style="width: 50px; height: 17px">主题:</td>
                                    <td colspan="3" style="width: 354px; height: 17px; text-align: left;">
                                    <%# DataBinder.Eval(Container.DataItem,"ArticleTitle") %>
                                    </td>
                                    <td colspan="1" style="width: 70px; height: 17px">
                                        <asp:LinkButton ID="lnkbtnCreateHTML" runat="server" Font-Size="9pt" ForeColor="Red">生成静态页</asp:LinkButton></td>
                                </tr>
                            </table>
                        </ItemTemplate>
                        <AlternatingItemStyle BackColor="#F7F7F7" />
                        <ItemStyle BackColor="#E7E7FF" ForeColor="#4A3C8C" />
                        <HeaderStyle BackColor="#4A3C8C" Font-Bold="True" ForeColor="#F7F7F7" />
                    </asp:DataList></td>
            </tr>
            <tr>
                <td colspan="3" rowspan="1"><strong>查看生成页</strong></td>
            </tr>
            <tr>
             <td colspan="3" rowspan="1"><asp:ListBox ID="ListBox1" runat="server" SelectionMode="Multiple" Width="230px"></asp:ListBox></td>
            </tr>
            <tr>
                <td colspan="3" rowspan="1" style="vertical-align: top; height: 24px; text-align: center">
                    <asp:Button ID="btnView" runat="server" Font-Size="9pt" OnClick="btnView_Click" Text="查看页面" />
                    <asp:Button ID="btnDelete" runat="server" Font-Size="9pt" OnClick="btnDelete_Click"
                        Text="删除页面" /></td>
            </tr>
        </table>
    
    </div>
    </form>
</body>
2.后台
using System.Data.SqlClient;  //添加引用
using System.Text;
using System.IO;
using System.Collections;

public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            string ConStr = "Server=(local);DataBase=db_17;Uid=sa;Pwd=";
            string cmdtxt = "SELECT * FROM tb_13";
            SqlConnection Con = new SqlConnection(ConStr);
            Con.Open();
            SqlDataAdapter da = new SqlDataAdapter(cmdtxt, Con);
            DataSet ds = new DataSet();
            da.Fill(ds);
            this.DataList1.DataSource = ds;
            this.DataList1.DataKeyField = "ID";
            this.DataList1.DataBind();
            //将文件绑定到 ListBox中
            ArrayList arylst = new ArrayList();
            string filepath = Server.MapPath("HTMLPage");
            DirectoryInfo info = new DirectoryInfo(filepath);
            FileInfo[] fileinfo = info.GetFiles();
            foreach (FileInfo allfile in fileinfo)
            {
                arylst.Add(allfile);
            }
            this.ListBox1.DataSource = arylst;
            this.ListBox1.DataBind();
        }
    }

    protected void DataList1_ItemCommand(object source, DataListCommandEventArgs e)
    {
        string ConStr = "Server=(local);DataBase=db_17;Uid=sa;Pwd=";
        string cmdtxt = "SELECT * FROM tb_13 WHERE ID="+this.DataList1.DataKeys[e.Item.ItemIndex].ToString()+"";
        SqlConnection Con = new SqlConnection(ConStr);
        Con.Open();
        SqlCommand Com = new SqlCommand(cmdtxt,Con);
        SqlDataReader dr = Com.ExecuteReader();
        dr.Read();
        if(dr.HasRows)
        {
            WriteFile(dr["ArticleTitle"].ToString(), dr["ArticleContent"].ToString(), dr["ID"].ToString());
            Response.Write("<script>alert('静态页生成成功!');location='Default.aspx'</script>");
        }
        dr.Close();
    }

    public bool WriteFile(string ArticleTitle, string ArticleContent, string ArticleID)
    {
        string OutPutPath = HttpContext.Current.Server.MapPath("HTMLPage/");
        Encoding encoding = Encoding.GetEncoding("gb2312");
        // 读取模板文件
        string ModelTemp = HttpContext.Current.Server.MapPath("ModelHTML.htm");
        StreamReader sr = null;
        StreamWriter sw = null;
        string str = "";
        try
        {
            sr = new StreamReader(ModelTemp, encoding);
            str = sr.ReadToEnd(); // 读取文件
        }
        catch (Exception exp)
        {
            HttpContext.Current.Response.Write(exp.Message);
            HttpContext.Current.Response.End();
            sr.Close();
        }


        string HtmlFilename = DateTime.Now.ToString("yyyyMMddHHmmss_") +ArticleID+ ".html";
        // 替换内容
        str = str.Replace("PageTitle", ArticleTitle); //模板页中的PageArticle
        str = str.Replace("ArticleTitle", ArticleTitle);
        str = str.Replace("ArticleContent", ArticleContent);
        // 写文件
        try
        {
            sw = new StreamWriter(OutPutPath+HtmlFilename, false, encoding);
            sw.Write(str);
            sw.Flush();
        }
        catch (Exception ex)
        {
            HttpContext.Current.Response.Write(ex.Message);
            HttpContext.Current.Response.End();
        }
        finally
        {
            sw.Close();
        }
        return true;
    }
    protected void btnView_Click(object sender, EventArgs e)
    {
        Response.Redirect("HTMLPage/" + this.ListBox1.SelectedValue);
    }
    protected void btnDelete_Click(object sender, EventArgs e)
    {
        string filepath = Server.MapPath("HTMLPage/");
        File.Delete(filepath + this.ListBox1.SelectedValue);
        Response.Write("<script>alert('页面删除成功!');location='Default.aspx'</script>");
    }
}

3.ModelHTML.htm(静态页面模版)
<head>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">
    <title>PageTitle</title>
</head>
<body style="text-align: center">
    <table style="width: 700px; height: 601px">
        <tr>
            <td colspan="3" style="height: 106px" bgcolor="#00cc33">
                <span style="font-size: 16pt; color: #3333ff"><strong>广告区</strong></span></td>
        </tr>
        <tr>
            <td bgcolor="#00cc33" style="width: 177px; height: 146px">
            </td>
            <td colspan="2" rowspan="3" style="margin-top: 0px; vertical-align: top; padding-top: 0px">
                <table style="width: 502px">
                    <tr>
                        <td colspan="3" style="height: 55px">
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3" rowspan="2">
                            <strong>ArticleTitle </strong>
                        </td>
                    </tr>
                    <tr>
                    </tr>
                    <tr>
                        <td colspan="3" rowspan="1" style="text-align: left; font-size: 9pt;">ArticleContent</td>
                    </tr>
                </table>
            </td>
        </tr>
    </table>

</body>
</html>

 

  


posted @ 2011-08-24 22:38  rains  阅读(414)  评论(0编辑  收藏  举报