首页  ·  知识 ·  云计算
生成静态页面C#+asp.net重点在于Replace
网友    综合  编辑:dezai   图片来源:网络
 主要包含三个页面文件TempHtml.html(模板文件),default.aspx(上传新闻内容页面),deault.aspx.cs(后台实现代码):
新闻模板文件(TempHtml.html):
 <html>
       <head>
              <title>$htmlkey[0]</title>
              <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
       </head>
       <body >
              <table $htmlkey[1] height="100%" border="0" width="100%" cellpadding="10" cellspacing="0"  bgcolor="#eeeeee" style="border:1px solid #000000">
                 <tr>
                    <td width="100%" valign="middle" align="left">
      <span style="color: $htmlkey[2];font-size: $htmlkey[3]"><marquee>$htmlkey[4]</marquee></span>
     </td>
                 </tr>
              </table>
       </body>
</html>
 
上传新闻内容页面:default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="default.aspx.cs" Inherits="default" %>
<!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>Untitled Page</title>
</head>
<body>
   <form id="Form1" method="post" runat="server">
      <asp:Button id="btnCreate" style="Z-INDEX: 101; LEFT: 576px; POSITION: absolute; TOP: 48px"
       runat="server" Text="创建HTML文件" OnClick="btnCreate_Click"></asp:Button>
      <asp:TextBox id="txtContent" style="Z-INDEX: 102; LEFT: 208px; POSITION: absolute; TOP: 80px"
       runat="server" TextMode="MultiLine" Height="402px" Width="352px"></asp:TextBox>
      <asp:HyperLink id="hyCreateFile" style="Z-INDEX: 103; LEFT: 584px; POSITION: absolute; TOP: 96px"
       runat="server" Target="_blank">创建的HTML文件</asp:HyperLink>
      <asp:TextBox id="txtTitle" style="Z-INDEX: 104; LEFT: 208px; POSITION: absolute; TOP: 48px" runat="server"
       Width="352px"></asp:TextBox>
      <asp:Label id="Label1" style="Z-INDEX: 105; LEFT: 128px; POSITION: absolute; TOP: 48px" runat="server">页面标题</asp:Label>
      <asp:Label id="Label2" style="Z-INDEX: 106; LEFT: 128px; POSITION: absolute; TOP: 80px" runat="server">页面内容</asp:Label>
  </form>
</body>
</html>
 
实现代码:default.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 System.Text;//StringBuilder 类命名空间
using System.IO;//读取写入命名空间
public partial class Dhtml : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
    }
    protected void btnCreate_Click(object sender, EventArgs e)
    {
        string[] newContent = new string[5];//定义数组用来保存temphtml.html中的标记数目
        StringBuilder strhtml = new StringBuilder();//实例化一个strhtml
        try
        {
            //创建StreamReader对象 news为TempHtml.html所在的文件夹
            using (StreamReader sr = new StreamReader(Server.MapPath("news") + "\\TempHtml.html"))
            {
                string oneline;
                //读取指定的HTML文件模板
                while ((oneline= sr.ReadLine()) != null)
                {
                    strhtml.Append(oneline);
                }
                sr.Close();
            }
        }
        catch (Exception err)
        {
            //异常处理
            Response.Write(err.ToString());
        }
        //为标记数组赋值
        newContent[0] = txtTitle.Text;//标题
        newContent[1] = "BackColor='#cccfff'";//背景色
        newContent[2] = "#ff0000";//字体颜色
        newContent[3] = "100px";//字体大小
        newContent[4] = txtContent.Text;//主要内容
        //根据上面新的内容生成html文件
        try
        {
            //指定要生成的HTML文件
            string fname = Server.MapPath("news") + "\\" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";
            //替换html模版文件里的标记为新的内容
            for (int i = 0; i < 5; i++)
            {
                strhtml.Replace("$htmlkey[" + i + "]", newContent[i]);
            }
            //创建文件信息对象
            FileInfo finfo = new FileInfo(fname);
            //以打开或者写入的形式创建文件流
            using (FileStream fs = finfo.OpenWrite())
            {
                //根据上面创建的文件流创建写数据流
                StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.GetEncoding("GB2312"));
                //把新的内容写到创建的HTML页面中
                sw.WriteLine(strhtml);
                sw.Flush();
                sw.Close();
            }
            //设置超级链接的属性
            hyCreateFile.Text = DateTime.Now.ToString("yyyymmddhhmmss") + ".html";
            hyCreateFile.NavigateUrl = "news/" + DateTime.Now.ToString("yyyymmddhhmmss") + ".html";
        }
        catch (Exception err)
        {
            Response.Write(err.ToString());
        }
    }
本文作者:网友 来源:网络
CIO之家 www.ciozj.com 微信公众号:imciow
   
免责声明:本站转载此文章旨在分享信息,不代表对其内容的完全认同。文章来源已尽可能注明,若涉及版权问题,请及时与我们联系,我们将积极配合处理。同时,我们无法对文章内容的真实性、准确性及完整性进行完全保证,对于因文章内容而产生的任何后果,本账号不承担法律责任。转载仅出于传播目的,读者应自行对内容进行核实与判断。请谨慎参考文章信息,一切责任由读者自行承担。
延伸阅读