zoukankan      html  css  js  c++  java
  • .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="false" validateRequest="false" CodeFile="NewsAdd.aspx.cs" Inherits="NewsAdd.Admin_AdminPanel_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 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> 
    
    
    3、后台页面 NewsAdd.aspx.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 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 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()); 
    } 
    } 
    } 
    } 
    
    
    请不要直接拷贝使用,里面的路径需要更改,但程序绝对没问题,在我本地已经测试通过。 
    
    另外在使用时,比如我要把新闻的内容分成4页,就应该这样写:111 ¦222 ¦333 ¦444。 
    
    
    
    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/jiangling9822/archive/2008/08/28/2841854.aspx
    
  • 相关阅读:
    Struts2SpringHibernate整合示例,一个HelloWorld版的在线书店(项目源码+详尽注释+单元测试)
    Java实现蓝桥杯勇者斗恶龙
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 226 翻转二叉树
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 225 用队列实现栈
    Java实现 LeetCode 224 基本计算器
    Java实现 LeetCode 224 基本计算器
  • 原文地址:https://www.cnblogs.com/jkyweb/p/2014965.html
Copyright © 2011-2022 走看看