aspx 生成HTML 静态页[转帖]

 

 

cs 页:

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 System.Text;
using System.IO;
using System.Net;

namespace WebHtml
{
    public partial class _Default : System.Web.UI.Page
    {
         protected void Page_Load(object sender, EventArgs e)
        {

        }
        protected void Button1_Click(object sender, EventArgs e)
        {
            string strDate = DateTime.Now.ToString("yyMMdd") + "\\" + DateTime.Now.ToString("yyyymmddhhmmss");
            string strFileName = strDate + ".shtml";//
存储到数据库中
            string strTitle=Request.Form["Title"].ToString().Trim();//
接收传过来的标题
            string strContent=Request.Form["Content"].ToString().Trim();//
接收传过来的内容
            string[] content = strContent.Split(new Char[] {'|'});//
对内容进行拆分,并保存到数组
            int upbound = content.Length;//
数组的上限
            //SqlServerDataBase db = new SqlServerDataBase();
           // bool success = db.Insert("insert into inNews(Title,Content,FilePath)values('" + strTitle + "','" + strContent + "','" + strFileName + "')", null);
            //if (success)
               // Message.Text = "
添加成功!";
            /**////////////////////////////
创建当前日期的文件夹开始
            string dir = Server.MapPath("NewsFiles/"+DateTime.Now.ToString("yyMMdd"));//
用来生成文件夹
            if (!Directory.Exists(dir))
            {
                Directory.CreateDirectory(dir);
            }
            /**////////////////////////////
创建当前日期的文件夹结束
            try
            {
            for (int i = 0; i < content.Length; i++)
            {
            //string[] newContent = new string[4];//
定义和html标记数目一致的数组
            StringBuilder strhtml = new StringBuilder();

                //创建StreamReader对象
            using (StreamReader sr = new StreamReader(Server.MapPath("NewsFiles/") + "Template.htm", Encoding.GetEncoding("gb2312")))
                {
                    String oneline;
                    //
读取指定的HTML文件模板
                    while ((oneline = sr.ReadLine()) != null)
                    {
                        strhtml.Append(oneline);
                    }
                    sr.Close();
                }

            //为标记数组赋值
            //SqlServerDataBase db = new SqlServerDataBase();
           // DataSet ds = db.Select("select top 1 NewsId from inNews order by NewsId desc", null);//
获取id
            string strTable = "<table><tr><td>$upUrl</td><td>$Number< /td><td>$downUrl</td></tr></table>";//
上下页表格,注 意此处的$upUrl(上一页),$Number(页码分页),$downUrl(下一页)
            //
这三个是用来替换的。

                string FilePath="";
                strhtml = strhtml.Replace("$Title", strTitle);
                //strhtml = strhtml.Replace("$NewsId", ds.Tables[0].Rows[0]["NewsId"].ToString());
                strhtml = strhtml.Replace("$NewsId", "10");
                strhtml = strhtml.Replace("$Time", DateTime.Now.ToString("yyyy/MM/dd"));
                strhtml = strhtml.Replace("$Content", content[i]);
                string strNumber = "";//
数字分页123……
                for (int m = 1; m <=upbound; m++)
                {
                    if (m == 1)//
如果是第一页就显示成这个样子:20070524.shtml而不是20070524_1.shtml
                        strNumber = strNumber + " ["+"<a href=" + "../" + strDate + ".shtml" + ">" + m + "</a>"+"] ";
                    else
                    {
                        int n = m - 1;//
第三页的连接应该是20070524_2.shtml,以此类推
                        strNumber = strNumber + " [" +"<a href=" + "../" + strDate + "_" + n + ".shtml" + ">" +  m + "</a>"+"] ";
                    }
                }
                    if (upbound == 0)//
如果没有分页,就直接按日期时间保存
                    {
                        FilePath = Server.MapPath("NewsFiles") + "//" + strDate + ".shtml";
                        strhtml = strhtml.Replace("$Pager", "");
                    }
                    else//
否则按20070524.shtml20070524_1.shtml 这种效果保存
                    {
                        if (i == 0)
                            FilePath = Server.MapPath("NewsFiles") + "//" + strDate + ".shtml";
                        else
                            FilePath = Server.MapPath("NewsFiles") + "//" + strDate + "_" + i + ".shtml";
                       
                        if (i == 0)//
第一页不显示上一页
                            strTable = strTable.Replace("$upUrl", "");

                        if (i <= 1)//上一页分页
                            strTable = strTable.Replace("$upUrl", "<a href=" + "../" + strDate + ".shtml" + ">
上一页</a>");
                        else
                        {
                            int p = i - 1;
                            strTable = strTable.Replace("$upUrl", "<a href=" + "../" + strDate + "_" + p + ".shtml" + ">
上一页</a>");
                        }
                       
                        if(upbound==1)//
如果只有一页,则不显示页码
                        //strNumber="";
                        strTable = strTable.Replace("$Number", "");
                        else
                        strTable = strTable.Replace("$Number", strNumber);//
页码替换
                        /**/////////////////////////
                        if(i==upbound-1)//
最后一页不显示下一页
                            strTable = strTable.Replace("$downUrl", "");

                        if (i != upbound - 1)//下一页分页
                        {
                            int q = i + 1;
                            strTable = strTable.Replace("$downUrl", "<a href=" + "../" + strDate + "_" + q + ".shtml" + ">
下一页</a>");
                        }
                        else
                        {
                            int j = upbound - 1;
                            strTable = strTable.Replace("$downUrl", "<a href=" + "../" + strDate + "_" + j + ".shtml" + ">
下一页</a>");
                        }

                        strhtml = strhtml.Replace("$Pager", strTable);
                    }
                //
创建文件信息对象--------------------------------------------
                FileInfo finfo = new FileInfo(FilePath);
                //
以打开或者写入的形式创建文件流
                using (FileStream fs = finfo.OpenWrite())
                {
                    //
根据上面创建的文件流创建写数据流
                    StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);
                    //
把新的内容写到创建的HTML页面中
                    sw.WriteLine(strhtml);
                    sw.Flush();
                    sw.Close();
                }
            }
        }
        catch (Exception err)
        {
            //
输出异常信息
            Response.Write(err.ToString());
        }
        }
    }
}
-------------------------------
aspx

<%@ Page AutoEventWireup="true" Codebehind="Default.aspx.cs" Inherits="WebHtml._Default"
    Language="C#" ValidateRequest="false" %>

<!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:Label ID="Label2" runat="server" Text="
标题"></asp:Label>
            <asp:TextBox ID="Title" runat="server" Width="325px"></asp:TextBox><br />
            <asp:Label ID="Label1" runat="server" Text="
内容"></asp:Label>
            <asp:TextBox ID="Content" runat="server" Height="284px" TextMode="MultiLine" Width="324px"></asp:TextBox>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
            <asp:Label ID="Message" runat="server"></asp:Label></div>
    </form>
</body>
</html>
模板页:
<!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 content="zh-cn" http-equiv="Content-Language" />
    <meta content="text/html; charset=gb2312" http-equiv="Content-Type" />
    <title>$Title</title>
    <style type="text/css">a {text-decoration:none;}</style>
</head>
<body>
    <table style=" 100%">
        <tr>
            <td style="font-size: 14pt; text-align: center; font-weight: bold;">
                <Caput>$Title</Caput>
            </td>
        </tr>
        <tr>
            <td style="text-align: right; font-size: 10pt;">
                <Date>$Time</Date></td>
        </tr>
        <tr>
            <td style="vertical-align: top; font-size: 10pt; ">
                <hr style="color: #DCE0E5; height: 1px;" />
                <Content>$Content</Content></td>
        </tr>
        <tr>
            <td style="font-size: 10pt; text-align: center">
                $Pager</td>
        </tr>
    </table>
</body>
</html>

 

 

转自: http://www.cnblogs.com/ejiyuan/archive/2007/11/09/954325.html

原文地址:https://www.cnblogs.com/liangwei389/p/1169765.html