NET2.0 使用模板生成静态页面并分页

1、静态模板页面 template.html,主要是定义了一些特殊字符,用来被替换。
view plain copy to clipboard print ?
  1. >  
  2.   
  3. <html>  
  4.   
  5. <head>  
  6.   
  7. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">  
  8.   
  9. <title>$Titletitle>  
  10.   
  11. head>  
  12.   
  13. <body>  
  14.   
  15.     <div style="width: 417px; height: 54px" align="center">  
  16.   
  17.         <br />  
  18.   
  19.     $Titlediv>  
  20.   
  21.     <div style="width: 417px; height: 8px">  
  22.   
  23.         浏览<font color="red"><script src="http://localhost/.Net/NewsFiles/ClickCount.aspx?NewsId=$NewsId">script>font>次  $Timediv>  
  24.   
  25.     <div style="width: 417px; height: 100px">  
  26.   
  27.         $Contentdiv>  
  28.   
  29.     <div style="width: 416px; height: 9px">  
  30.   
  31.         $Pagerdiv>  
  32.   
  33.     <div style="width: 416px; height: 8px">  
  34.   
  35.     <form id="form1" action="../AddComment.aspx" style="margin:0px">  
  36.   
  37.         <input id="Text1" type="text" /><Img id="Image1" src="../../UserInfo/CheckCode.aspx"/><br />  
  38.   
  39.         <textarea  id="CommentContent" cols="20" rows="2">textarea>  
  40.   
  41.         <br />  
  42.   
  43.         <input id="NewsId" type="hidden" value="$NewsId"/>  
  44.   
  45.         <input id="Button1" type="submit" value="button" />  
  46.   
  47.         <a href="../Display.aspx?NewsId=$NewsId">查看更多评论a>form>  
  48.   
  49.         div>  
  50.   
  51. body>  
  52.   
  53. html>  








$Title





    

$Title
浏览次 $Time
$Content
$Pager
 2、前态页面 NewsAdd.aspx,就是一个表单,用来填写新闻的标题和内容。
view plain copy to clipboard print ?
  1. <%@ Page Language="C#" AutoEventWireup="false" validateRequest="false" CodeFile="NewsAdd.aspx.cs" Inherits="NewsAdd.Admin_AdminPanel_NewsAdd" %>  
  2.   
  3. <%@ Register TagPrefix="FCKeditorV2" Namespace="FredCK.FCKeditorV2" Assembly="FredCK.FCKeditorV2" %>  
  4.   
  5. >  
  6.   
  7. <html xmlns="http://www.w3.org/1999/xhtml" >  
  8.   
  9. <head runat="server">  
  10.   
  11.     <title>添加新闻title>  
  12.   
  13. head>  
  14.   
  15. <body>  
  16.   
  17.     <form id="form1" runat="server">  
  18.   
  19.     <div>  
  20.   
  21.         <asp:Label ID="Label2" runat="server" Text="标题">asp:Label>  
  22.   
  23.         <asp:TextBox ID="Title" runat="server" Width="325px">asp:TextBox><br />  
  24.   
  25.         <asp:Label ID="Label1" runat="server" Text="内容">asp:Label>  
  26.   
  27.     <FCKeditorV2:FCKeditor id="Content" basePath="~/FCKeditor/"  runat="server" Height="400px" Width="70%">FCKeditorV2:FCKeditor>  
  28.   
  29.         <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />  
  30.   
  31.         <asp:Label ID="Message" runat="server" >asp:Label>div>  
  32.   
  33.     form>  
  34.   
  35. body>  
  36.   
  37. html>  
<%@ 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" %>







    添加新闻





    

3、后台页面 NewsAdd.aspx.cs
view plain copy to clipboard print ?
  1. using System;   
  2.   
  3. using System.Data;   
  4.   
  5. using System.Configuration;   
  6.   
  7. using System.Collections;   
  8.   
  9. using System.Web;   
  10.   
  11. using System.Web.Security;   
  12.   
  13. using System.Web.UI;   
  14.   
  15. using System.Web.UI.WebControls;   
  16.   
  17. using System.Web.UI.WebControls.WebParts;   
  18.   
  19. using System.Web.UI.HtmlControls;   
  20.   
  21. using System.Text;   
  22.   
  23. using System.IO;   
  24.   
  25. public partial class NewsAdd : System.Web.UI.Page   
  26.   
  27. {   
  28.   
  29.     protected void Page_Load(object sender, EventArgs e)   
  30.   
  31.     {   
  32.   
  33.     }   
  34.   
  35.     protected void Button1_Click(object sender, EventArgs e)   
  36.   
  37.     {   
  38.   
  39.         string strDate = DateTime.Now.ToString("yyMMdd") + """ + DateTime.Now.ToString("yyyyMMddhhmmss");   
  40.   
  41.         string strFileName = strDate + ".shtml";                    //存储到数据库中   
  42.   
  43.         string strTitle=Request.Form["Title"].ToString().Trim();    //接收传过来的标题   
  44.   
  45.         string strContent=Request.Form["Content"].ToString().Trim(); //接收传过来的内容   
  46.   
  47.         string[] content = strContent.Split(new Char[]{'|'});        //对内容进行拆分,并保存到数组   
  48.   
  49.         int upbound = content.Length;                                //数组的上限   
  50.   
  51.   
  52.   
  53.         /**/创建当前日期的文件夹开始 bbs.51aspx.com   
  54.   
  55.         string dir = Server.MapPath("~/~/" + "NewsFiles/" + DateTime.Now.ToString("yyMMdd"));  //用来生成文件夹   
  56.   
  57.         if (!Directory.Exists(dir))   
  58.   
  59.         {   
  60.   
  61.             Directory.CreateDirectory(dir);   
  62.   
  63.         }   
  64.   
  65.         try  
  66.   
  67.         {   
  68.   
  69.             for (int i = 0; i < content.Length; i++)   
  70.   
  71.             {   
  72.   
  73.                 //string[] newContent = new string[4];//定义和html标记数目一致的数组   
  74.   
  75.                 StringBuilder strhtml = new StringBuilder();   
  76.   
  77.                 using (StreamReader sr = new StreamReader(Server.MapPath("~/~/" + "NewsFiles/") + " emplate.html", Encoding.GetEncoding("gb2312")))   
  78.   
  79.                 {   
  80.   
  81.                     String oneline = "";   
  82.   
  83.                     //读取指定的HTML文件模板   
  84.   
  85.                     while ((oneline = sr.ReadLine()) != null)   
  86.   
  87.                     {   
  88.   
  89.                         strhtml.Append(oneline);   
  90.   
  91.                     }   
  92.   
  93.                     sr.Close();   
  94.   
  95.                 }   
  96.   
  97.                 //为标记数组赋值   
  98.   
  99.                 //SqlServerDataBase db = new SqlServerDataBase();   
  100.   
  101.                 DataSet ds = db.Select("select top 1 NewsId from inNews order by NewsId desc"null);//获取id   
  102.   
  103.                 //上下页表格,注意此处的$upUrl(上一页),$Number(页码分页),$downUrl(下一页)   
  104.   
  105.                 string strTable = "
    $upUrl$Number$downUrl
    "
    ;    
  106.   
  107.                 //这三个是用来替换的。   
  108.   
  109.                 string FilePath = "";   
  110.   
  111.                 strhtml = strhtml.Replace("$Title", strTitle);   
  112.   
  113.                 strhtml = strhtml.Replace("$NewsId", ds.Tables[0].Rows[0]["NewsId"].ToString());   
  114.   
  115.                 strhtml = strhtml.Replace("$Time", DateTime.Now.ToString("yyyy/MM/dd"));   
  116.   
  117.                 strhtml = strhtml.Replace("$Content", content[i]);   
  118.   
  119.                 string strNumber = "";//数字分页1,2,3……   
  120.   
  121.                 for (int m = 1; m <= upbound; m++)   
  122.   
  123.                 {   
  124.   
  125.                     if (m == 1)//如果是第一页就显示成这个样子:20070524.shtml而不是20070524_1.shtml   
  126.   
  127.                     {   
  128.   
  129.                         strNumber = strNumber + " [" + " + "~/" + strDate + ".shtml" + ">" + m + "" + "] ";   
  130.   
  131.                     }   
  132.   
  133.                     else  
  134.   
  135.                     {   
  136.   
  137.                         int n = m - 1;//第三页的连接应该是20070524_2.shtml,以此类推   
  138.   
  139.                         strNumber = strNumber + " [" + " + "~/" + strDate + "_" + n + ".shtml" + ">" + m + "" + "] ";   
  140.   
  141.                     }   
  142.   
  143.                 }   
  144.   
  145.                 if (upbound == 0)//如果没有分页,就直接按日期时间保存   
  146.   
  147.                 {   
  148.   
  149.                     FilePath = Server.MapPath("~/~/") + "NewsFiles" + "//" + strDate + ".shtml";   
  150.   
  151.                     strhtml = strhtml.Replace("$Pager""");   
  152.   
  153.                 }   
  154.   
  155.                 else//否则按20070524.shtml、20070524_1.shtml 这种效果保存   
  156.   
  157.                 {   
  158.   
  159.                     if (i == 0)   
  160.   
  161.                         FilePath = Server.MapPath("~/~/") + "NewsFiles" + "//" + strDate + ".shtml";   
  162.   
  163.                     else  
  164.   
  165.                         FilePath = Server.MapPath("~/~/") + "NewsFiles" + "//" + strDate + "_" + i + ".shtml";   
  166.   
  167.                     if (i == 0)//第一页不显示上一页   
  168.   
  169.                         strTable = strTable.Replace("$upUrl""");   
  170.   
  171.                     if (i <= 1)//上一页分页   
  172.   
  173.                         strTable = strTable.Replace("$upUrl"" + "~/" + strDate + ".shtml" + ">上一页");   
  174.   
  175.                     else  
  176.   
  177.                     {   
  178.   
  179.                         int p = i - 1;   
  180.   
  181.                         strTable = strTable.Replace("$upUrl"" + "~/" + strDate + "_" + p + ".shtml" + ">上一页");   
  182.   
  183.                     }   
  184.   
  185.                     if (upbound == 1)//如果只有一页,则不显示页码   
  186.   
  187.                         //strNumber="";   
  188.   
  189.                         strTable = strTable.Replace("$Number""");   
  190.   
  191.                     else  
  192.   
  193.                         strTable = strTable.Replace("$Number", strNumber);//页码替换   
  194.   
  195.                     if (i == upbound - 1)//最后一页不显示下一页   
  196.   
  197.                         strTable = strTable.Replace("$downUrl""");   
  198.   
  199.                     if (i != upbound - 1)//下一页分页   
  200.   
  201.                     {   
  202.   
  203.                         int q = i + 1;   
  204.   
  205.                         strTable = strTable.Replace("$downUrl"" + "~/" + strDate + "_" + q + ".shtml" + ">下一页");   
  206.   
  207.                     }   
  208.   
  209.                     else  
  210.   
  211.                     {   
  212.   
  213.                         int j = upbound - 1;   
  214.   
  215.                         strTable = strTable.Replace("$downUrl"" + "~/" + strDate + "_" + j + ".shtml" + ">下一页");   
  216.   
  217.                     }   
  218.   
  219.                     strhtml = strhtml.Replace("$Pager", strTable);   
  220.   
  221.                 }   
  222.   
  223.                 //创建文件信息对象--------------------------------------------   
  224.   
  225.                 FileInfo finfo = new FileInfo(FilePath);   
  226.   
  227.                 //以打开或者写入的形式创建文件流   
  228.   
  229.                 using (FileStream fs = finfo.OpenWrite())   
  230.   
  231.                 {   
  232.   
  233.                     //根据上面创建的文件流创建写数据流   
  234.   
  235.                     StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.Default);   
  236.   
  237.                     //把新的内容写到创建的HTML页面中   
  238.   
  239.                     sw.WriteLine(strhtml);   
  240.   
  241.                     sw.Flush();   
  242.   
  243.                     sw.Close();   
  244.   
  245.                 }   
  246.   
  247.             }   
  248.   
  249.         }   
  250.   
  251.         catch (Exception err)   
  252.   
  253.         {   
  254.   
  255.             //输出异常信息   
  256.   
  257.             Response.Write(err.ToString());   
  258.   
  259.         }   
  260.   
  261.     }   
  262.   
  263. }  

你可能感兴趣的:(c#web开发,C#技术文章,高级编程,生成静态,fckeditor,button,server,asp,assembly,html)