ASP.NET生成静态页面方法主要有三种
 
第一种方法:向服务器的动态页面发送请求,获取页面的html代码。这种方法缺点显而易见:速度慢。另外如果请求的动态页面有验证控件的话,返回的html页面却无法进行数据验证。但这种方法写起来比较简单。主要代码如下:
 
#region//生成被请求URL静态页面
 
public static void getUrltoHtml(string Url,string Path)//Url为动态页面地址,Path为生成的静态页面
 
{
 
try
 
{
 
   System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
 
     // Get the response instance.
 
   System.Net.WebResponse wResp =wReq.GetResponse();
 
     // Get the response stream.
 
   System.IO.Stream respStream = wResp.GetResponseStream();
 
     // Dim reader As StreamReader = New StreamReader(respStream)
 
   System.IO.StreamReader reader = new System.IO.StreamReader(respStream,System.Text.Encoding.GetEncoding("gb2312"));
 
   string str=reader.ReadToEnd();
 
   System.IO.StreamWriter sw=new System.IO.StreamWriter(Path,false,System.Text.Encoding.GetEncoding("gb2312"));
 
   sw.Write(str);
 
   sw.Flush();
 
   sw.Close();
 
   System.Web.HttpContext.Current.Response.Write(" ");
 
}
 
catch(System.Exception ex)
 
{
 
   System.Web.HttpContext.Current.Response.Write(" ");
 
}
 
}
 
#endregion
 
第二种方法:从文件读取模版,替换模版中的参数后输出文件,这种方法的生成速度上比第一种要快许多,而且模版内容可以用工具任意编辑
 
主要代码:
 
using System;
 
using System.Collections;
 
using System.ComponentModel;
 
using System.Data;
 
using System.Drawing;
 
using System.Web;
 
using System.Web.SessionState;
 
using System.Web.UI;
 
using System.Web.UI.WebControls;
 
using System.Web.UI.HtmlControls;
 
using System.IO;
 
using System.Text;
 
namespace xinxi
 
{
 
///
 
/// CreatePage的摘要说明。
 
///
 
// www.365xinxi.net
 
// 此类是生成静态网页的小程序
 
public class Create
 
{
 
   public void CreatePage()
 
   {
 
   }
 
   public static bool WriteFile(string strText,string strContent,string strAuthor)
 
   {
 
    string path = HttpContext.Current.Server.MapPath("/test/");//文件输出目录
 
    Encoding code = Encoding.GetEncoding("gb2312");
 
    // 读取模板文件
 
    string temp = HttpContext.Current.Server.MapPath("/template/test.html");//模版文件
 
    StreamReader sr=null;
 
    StreamWriter sw=null;
 
    string str="";
 
    try
 
    {
 
     sr = new StreamReader(temp,code);
 
     str = sr.ReadToEnd(); // 读取文件
 
    }
 
    catch(Exception exp)
 
    {
 
     HttpContext.Current.Response.Write(exp.Message);
 
     HttpContext.Current.Response.End();
 
     sr.Close();
 
    }
 
    string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";//静态文件名
 
    // 替换内容
 
    // 这时,模板文件已经读入到名称为str的变量中了
 
    str = str.Replace("ShowArticle",strText); //模板页中的ShowArticle
 
    str = str.Replace("biaoti",strText);
 
    str = str.Replace("content",strContent);
 
    str = str.Replace("author",strAuthor);
 
    // 写文件
 
    try
 
    {
 
     sw = new StreamWriter(path + htmlfilename , false, code);
 
     sw.Write(str);
 
     sw.Flush();
 
    }
 
    catch(Exception ex)
 
    {
 
     HttpContext.Current.Response.Write(ex.Message);
 
     HttpContext.Current.Response.End();
 
    }
 
    finally
 
    {
 
     sw.Close();
 
    }
 
    return true;
 
   }
 
}
 
}
 
//原理是利用System.IO中的类读写模板文件,然后用Replace替换掉模板中的标签,写入静态html
 
第三种方法:如果生成的文件数量比较多,第二种方法就要反复读取模版内容,这时可以用第三种方法——直接将你的模版写在代码中,和上次我写的网站Header和Footer的制作方法类似:
 
using System;
 
using System.Collections;
 
using System.Data;
 
using System.Data.OleDb;
 
using System.Text;
 
using System.IO;
 
using System.Web;
 
using System.Web.UI;
 
using System.Web.UI.WebControls;
 
using System.Web.UI.HtmlControls;
 
namespace xinxi
 
{
 
///
 
/// 自定义公共函数
 
///
 
public class myfun
 
{
 
   #region//定义模版页
 
   public static string SiteTemplate()
 
   {
 
    string str="";
 
    str+="...";//模版页html代码
 
    return str;
 
   }
 
   #endregion
 
   public static bool WriteFile(string strText,string strContent,string strAuthor)
 
   {
 
    string path = HttpContext.Current.Server.MapPath("/test/");//文件输出目录
 
    Encoding code = Encoding.GetEncoding("gb2312");
 
    StreamWriter sw=null;
 
    string str=SiteTemplate();//读取模版页面html代码
 
    string htmlfilename=DateTime.Now.ToString("yyyyMMddHHmmss")+".html";//静态文件名
 
    // 替换内容
 
    str = str.Replace("ShowArticle",strText);
 
    str = str.Replace("biaoti",strText);
 
    str = str.Replace("content",strContent);
 
    str = str.Replace("author",strAuthor);
 
    // 写文件
 
    try
 
    {
 
     sw = new StreamWriter(path + htmlfilename , false, code);
 
     sw.Write(str);
 
     sw.Flush();
 
    }
 
    catch(Exception ex)
 
    {
 
     HttpContext.Current.Response.Write(ex.Message);
 
     HttpContext.Current.Response.End();
 
    }
 
    finally
 
    {
 
     sw.Close();
 
    }
 
    return true;
 
   }
 
}
 
}

三种C#.net生成静态页面的方法的更多相关文章

  1. PHP生成静态页面的方法

          在PHP网站开发中为了网站推广和SEO等需要,需要对网站进行全站或局部静态化处理,PHP生成静态HTML页面有多种方法,比如利用PHP模板.缓存 等实现页面静态化,今天就以PHP实例教程形 ...

  2. 浅谈php生成静态页面

    一.引 言 在速度上,静态页面要比动态页面的比方php快很多,这是毫无疑问的,但是由于静态页面的灵活性较差,如果不借助数据库或其他的设备保存相关信息的话,整体的管理上比较繁琐,比方修改编辑.比方阅读权 ...

  3. 比较详细PHP生成静态页面教程

    一,PHP脚本与动态页面. PHP脚本是一种服务器端脚本程序,可通过嵌入等方法与HTML文件混合, 也可以类,函数封装等形式,以模板的方式对用户请求进行处理.无论以何种方式,它的基本原理是这样的.由客 ...

  4. PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程

    1.server会依据文件的后缀名去进行解析,假设是HTML文件则server不会进行语法解析.而是直接输出到浏览器. 2.假设一个页面中所有都是HTML代码而没有须要解析的PHP语法,则没有必要保存 ...

  5. PHP生成静态页面详解

    PHP生成静态页面详解 看到很多朋友在各个地方发帖问PHP生成静态文章系统的方法,以前曾做过这样一个系统,遂谈些看法,以供各位参考.好了,我们先回顾一些基本的概念. 一,PHP脚本与动态页面. PHP ...

  6. PHP代码为什么不能直接保存HTML文件——>PHP生成静态页面教程

    1.服务器会根据文件的后缀名去进行解析,如果是HTML文件则服务器不会进行语法解析,而是直接输出到浏览器. 2.如果一个页面中全部都是HTML代码而没有需要解析的PHP语法,则没有必要保存为PHP文件 ...

  7. .NET生成静态页面并分页

    因为公司的产品用asp开发, 前一段时间用asp写了一个生成静态页面并分页的程序,但缘于对.net的热爱,写了这个.net下的生成静态页面并分页的程序. 主要的原理就是替换模板里的特殊字符. 1.静态 ...

  8. .net 生成 静态页面

    .net 生成 静态页面 <!--Main.Aspx--> <%@ page language="C#" %> <%@ import namespac ...

  9. 用 Smarty 生成静态页面入门介绍

    why Smarty? 随着公司首页(以下简称首页)流量越来越大,最近开始考虑使用后台语言生成静态页面的技术. 我们知道,一个简单页面一般是一个 .html(或者 .htm ..shtml)后缀的文件 ...

随机推荐

  1. 64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法

    原文地址:64位Win2008_VS2012使用ODP.NET遭遇问题和解决办法 最近为使用Oracle11G数据库做个快速开发的小程序,使用64位Win2008+Vs2012环境,结果碰壁连环,幸好 ...

  2. rails第一次做项目

    最近这几天一直都是在做rails的入门,也就是熟悉rails的增.删.改.查操作,做到rails的入门.这几天的熟悉,只是对于操作的熟悉,对于rails语言的机制还有很多不是很熟悉.昨天接手第一个真正 ...

  3. vijosP1159 岳麓山上打水

    vijosP1159 岳麓山上打水 链接:https://vijos.org/p/1159 [思路] 迭代加深搜索+完全背包判断. 自己没有思路,看的别人代码. 总体上讲就是不断增大桶的数目并以之为上 ...

  4. CPSR和SPSR(转)

    转载地址:http://blog.chinaunix.net/uid-28458801-id-3487199.html CPSR:程序状态寄存器(current program status regi ...

  5. struts1与strut2的区别

    struts1和struts2是两个完全不同的框架 struts1工作流程:发布Struts Web服务时,根据web.xml初始化ActionServlet,ActionContext等内容.在接到 ...

  6. 数据库分页--MySQL数据库

    关于实现MySQL分页的最简单的方法就是利用mysql数据库的limit函数:limit [offset,] rows SELECT * FROM 表名称 LIMIT M,N limit 子句可以被用 ...

  7. It appears as though you do not have permission to view information for any of the services you requested

  8. hdoj 3785 寻找大富翁【优先队列+sort排序】

    寻找大富翁 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submi ...

  9. 手机变为电脑的摄像头,使像素高清起来-使用DroidCam

    你是不是已经在嫌弃电脑自带的摄像头的渣渣像素呢? 今天给大家安利一个方法:将手机摄像头设置为电脑的摄像头,让像素高清起来,对于搞图像的同志们真是福音啊,尤其是做人脸识别的时候. 方法有很多种,我推荐我 ...

  10. ABAP ALV表头的实现

    ABAP实现ALV表头的DEMO: 效果: 源代码: *&------------------------------------------------------------------- ...