.NET生成静态页面例子

news/2024/6/17 12:59:33

 

转自:http://blog.csdn.net/hankwen/archive/2008/11/27/3388941.aspx

 

近期做一个项目,需要将用户添加的表单生成静态页面,这个东西很早就有了,大部分是用在新闻系统里面,新闻添加后生成静态页面,只将文章标题,简介,连接地址等简单信息存入数据库,没办法只能再研究一下了!

时间有限,只是功能实现了!主要做法如下:

1、创建网站,并创建一个模板页,template.htm

2、添加一个web窗体Default.aspx

3、在网站下新建文件夹htm,设置该文件夹的属性,确保该文件夹具有可写权限

详细代码

1、template.htm

<!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>
    <title> $title$ 生成静态页</title>
    <style type="text/css">
<!--
.STYLE1 {
 font-size: 16px;
 font-weight: bold;
}
-->
    </style>
</head>
<body>
<br />
<br />
<table width="100%" border="0" bgcolor="#339900">
  <tr>
    <td height="34" align="center" bgcolor="#FFFFFF"><span class="STYLE1">$title$ </span></td>
  </tr>
  <tr>
    <td height="42" bgcolor="#FFFFFF"><br />
      <br />
    内容:$content$ </td>
  </tr>
</table>

</body>
</html>
2、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>Asp.net生成静态页的两个例子</title>
</head>
<body>
    <<form id="form1" runat="server">
    <div>
        标题:<asp:TextBox ID="txtTitle" runat="server" Width="352px"></asp:TextBox><br />
        内容:<asp:TextBox ID="txtContent" runat="server" Height="179px" TextMode="MultiLine"
            Width="350px"></asp:TextBox><br />
        <br />
        <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="根据模板生成" /><br />
        <br />
        <br />
        Url地址:<asp:TextBox ID="txtUrl" runat="server" ToolTip="请确认Url地址的存在" Width="359px"></asp:TextBox>
        <br />
        <br />
        <asp:Button ID="Button2" runat="server" Text="根据Url地址生成" OnClick="Button2_Click" /></div>
    </form>
</body>
</html>

3、后台代码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.Net;
using System.Text;
using System.IO;

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

    }
    //根据模板生成,保持在html文件夹中
    protected void Button1_Click(object sender, EventArgs e)
    {
        //源码是替换掉模板中的特征字符

        string mbPath = Server.MapPath("template.htm");
        Encoding code = Encoding.GetEncoding("gb2312");
        StreamReader sr = null;
        StreamWriter sw = null;
        string str = null;

        //读取
        try
        {
            sr = new StreamReader(mbPath, code);
            str = sr.ReadToEnd();

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            sr.Close();
        }

        //根据时间自动重命名,扩展名也可以自行修改
        string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";
        str = str.Replace("$title$", txtTitle.Text);//替换Title
        str = str.Replace("$content$", txtContent.Text);//替换content

        //生成静态文件
        try
        {
            sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
            sw.Write(str);
            sw.Flush();

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            sw.Close();
            Response.Write("恭喜<a href=htm/" + fileName + " target=_blank>" + fileName + "</a>已经生成,保存在htm文件夹下!");
        }

    }
    //根据Url地址生成静态页保持
    protected void Button2_Click(object sender, EventArgs e)
    {
        Encoding code = Encoding.GetEncoding("utf-8");
        StreamReader sr = null;
        StreamWriter sw = null;
        string str = null;

        //读取远程路径
        WebRequest temp = WebRequest.Create(txtUrl.Text.Trim());
        WebResponse myTemp = temp.GetResponse();
        sr = new StreamReader(myTemp.GetResponseStream(), code);
        //读取
        try
        {
            sr = new StreamReader(myTemp.GetResponseStream(), code);
            str = sr.ReadToEnd();

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            sr.Close();
        }
        string fileName = DateTime.Now.ToString("yyyyMMddHHmmss") + ".htm";

        //写入
        try
        {
            sw = new StreamWriter(Server.MapPath("htm/") + fileName, false, code);
            sw.Write(str);
            sw.Flush();

        }
        catch (Exception ex)
        {
            throw ex;
        }
        finally
        {
            sw.Close();
            Response.Write("恭喜<a href=htm/" + fileName + " target=_blank>" + fileName + "</a>已经生成,保存在htm文件夹下!");
        }

    }
}

此代码已经测试通过

生成静态页面可以根据时间来命名,也可以根据Url地址生成


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hankwen/archive/2008/11/27/3388941.aspx


http://www.niftyadmin.cn/n/2953824.html

相关文章

多线程,单线程

最近遇到一个项目&#xff0c;比较头疼&#xff0c;每个刀片服务器上面都有12个刀片&#xff0c;每个刀片2个cpu&#xff0c;两台刀片服务器还得考虑双机并行共享操作。。。有一次一个朋友问我&#xff0c;人是多线程还是单线程的&#xff0c;想了一下&#xff0c;这个或许没有…

stanford-parser for C#

在项目里用到C#对英文句子进行词性标注&#xff0c;比较成熟的英文词性标注软件是stanford-parser。它个C#版本&#xff0c;也是借助于IKVM完成JAVA-C#的转换。具体配置步骤如下&#xff1a; 1、下载stanford-parser的jar包 http://nlp.stanford.edu/software/lex-parser.sht…

StrongOD hook的API

好久没写东西了~~&#xff1a; >SSDT State NtClose Actual Address 0xF0389268 Hooked by: C:\OllyDBG\plugin\whlsod.sys NtCreateProcess Actual Address 0xF03892C8 Hooked by: C:\OllyDBG\plugin\whlsod.sys NtDuplicateObject Actual Address 0xF03891E8 Hooked by…

java static域_java 的栈,堆,静态域,常量池

1.寄存器&#xff1a;最快的存储区, 由编译器根据需求进行分配,我们在程序中无法控制.2. 栈&#xff1a;存放基本类型的变量数据和对象的引用&#xff0c;但对象本身不存放在栈中&#xff0c;而是存放在堆(new出来的对象)或者常量池中(字符串常量对象存放在常量池中。)3. 堆&am…

解决ORA-01410:Invalid ROWID的一般步骤

1.使用ANALYZE TABLE 2.设置event "1410 trace name errorstack level 3" 跟踪,分析跟踪文件.来自 “ ITPUB博客 ” &#xff0c;链接&#xff1a;http://blog.itpub.net/6906/viewspace-21688/&#xff0c;如需转载&#xff0c;请注明出处&#xff0c;否则将追究法…

Silverlight 3 Beta 新特性解析(5) - Data篇

前提条件&#xff1a; 阅读本文之前请确认你已经安装了如下软件 Visual Studio 2008 (Express) SP1 Silverlight 3 Tools For Visual Studio Microsoft Expression Blend 3 MIX 09 Preview .Net RIA Service Preview 本篇主要内容&#xff1a; .Net RIA Service介绍和实战 Data…

AV终结者手杀日记

第一次遇到AV的时候&#xff0c;是一个朋友说自己的电脑的瑞星不能打开。 习惯性的修改文件夹文件查看属性&#xff0c;可是怎么修改也不能打开隐藏项 运行&#xff0c;cmd进入console界面&#xff0c;d&#xff1a;盘&#xff0c;然后dir /a查看到了两个隐藏的文件 看到一个au…

Komodo调试perl

perl不熟&#xff0c;就需要IDE辅助。 Komodo下载地址http://download.csdn.net/detail/athing/1636308 perl下载地址http://strawberryperl.com/