zoukankan      html  css  js  c++  java
  • Asp.net生成静态页面并对内容分页

    主要的原理就是替换模板里的特殊字符。
    1、静态模板页面 template.html,主要是定义了一些特殊字符,用来被替换。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN""http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
        <title>Title</title>
    </head>
    <body>
        <div style=" 417px; height: 54px" align="center">
            <br />
            Title</div>
        <div style=" 417px; height: 8px">
            浏览<font color="red"><script src="http://localhost/.Net/NewsFiles/ClickCount.aspx?NewsId=NewsId"></script></font>次
            Time</div>
        <div style=" 417px; height: 100px">
            Content</div>
        <div style=" 416px; height: 9px">
            Pager</div>
        <div style=" 416px; height: 8px">
            <form id="form1" action="../AddComment.aspx" style="margin: 0px">
            <input id="Text1" type="text" /><img id="Image1" src="http://www.dwww.cn/UserInfo/CheckCode.aspx" /><br />
            <textarea id="CommentContent" cols="20" rows="2"></textarea>
            <br />
            <input id="NewsId" type="hidden" value="NewsId" />
            <input id="Button1" type="submit" value="button" />
            <a href="http://www.dwww.cn/News/Display.aspx?NewsId=NewsId">查看更多评论</a></form>
        </div>
    </body>
    </html>
    

    2、前态页面 NewsAdd.aspx,就是一个表单,用来填写新闻的标题和内容。

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="NewsAdd.aspx.cs" Inherits="NewsAdd" %>
    
    <%@ Register TagPrefix="FCKeditorV2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>
    <!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 id="Head1" 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>
            <FCKeditorV2:FCKeditor id="Content" basePath="~/FCKeditor/" runat="server" Height="400px"
                Width="70%">
            </FCKeditorV2:FCKeditor>
            <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
            <asp:Label ID="Message" runat="server"></asp:Label></div>
        </form>
    </body>
    </html>
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using System.IO;
    using System.Text;
    using System.Data;
    using System.Web.UI;
    using System.Web.UI.WebControls;
    
    public partial class NewsAdd : 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("http://www.cnblogs.com/"+"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("http://www.cnblogs.com/" + "NewsFiles/") + "\template.html",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("$Time", DateTime.Now.ToString("yyyy/MM/dd"));
                    strhtml = strhtml.Replace("$Content", content[i]);
                    string strNumber = "";//数字分页1,2,3……
                    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("http://www.cnblogs.com/") + "NewsFiles" + "//" + strDate + ".shtml";
                        strhtml = strhtml.Replace("$Pager", "");
                    }
                    else//否则按20070524.shtml、20070524_1.shtml 这种效果保存
                    {
                        if (i == 0)
                            FilePath = Server.MapPath("http://www.cnblogs.com/") + "NewsFiles" + "//" + strDate + ".shtml";
                        else
                            FilePath = Server.MapPath("http://www.cnblogs.com/") + "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());
            }
        }
    }


     

  • 相关阅读:
    vue-fullcalendar插件
    iframe 父框架调用子框架的函数
    关于调试的一点感想
    hdfs 删除和新增节点
    hadoop yarn 实战错误汇总
    Ganglia 安装 No package 'ck' found
    storm on yarn(CDH5) 部署笔记
    spark on yarn 安装笔记
    storm on yarn安装时 提交到yarn失败 failed
    yarn storm spark
  • 原文地址:https://www.cnblogs.com/smartsmile/p/6234327.html
Copyright © 2011-2022 走看看