目前生成静态页面的方法大致分为两种,一种是直接访问动态页面地址,将其生成的html代码保存成静态页面。另一种是通过读取页面模板,对其中需要替换的内容进行替换的方式进行生成。其中前一种方法简单,对于生成单个页面或少量页面比较实用,而对大量的页面且页面之间彼此关联复杂的,第一种就不太方便。对于使用模板的方法稍微复杂,这里不详细讨论,只给出第一种方法应对不太复杂的项目的应用。

  给定生成静态页面入口页面地址,比如Index.aspx,通过查找其中以href=开始的链接的页面地址,对其按一定规则进行替换后,生成静态化之后的Index.html,再依次对Index.aspx中的所有链接页面依次进行静态化,如此循环。

  下面的示例代码演示了如何将页面中的动态链接地址替换成按规则命名的静态地址。

以下是代码片段:
using System;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Text.RegularExpressions;

namespace WebTest
{
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string content = "<a target=\"_blank\" href=\"Product.aspx?classId=123\"><a target=\"_blank\" href=\"Product-view.aspx\"><a target=\"_blank\" href=\"Product-view.aspx?id=59\"><a target=\"_blank\" href=\"Product-view.aspx?id=11159\">";
string newContent = content;
Regex rg = new Regex("href="); //正则定位到链接
int len = 5; //正则字符长度
MatchCollection mc = rg.Matches(content);
foreach (Match m in mc)
{
int startIndex = m.Index + len + 1; //定位到的URL的起始位置
int endIndex = content.IndexOf("\"", m.Index + len + 1); //定位到的URL的结束位置
string originalURL = content.Substring(startIndex, endIndex - startIndex); //获取到URL的全地址
string newURL = "";
newURL = originalURL.Replace(".aspx?classId=", "-class-"); //产品类型的替换
newURL = newURL.Replace(".aspx?id=", "-"); //产品的替换
newURL = newURL.Replace(".aspx", "");
newURL += ".html";

newContent = newContent.Replace(originalURL +"\"", newURL +"\""); //替换掉原URL地址为静态地址
}

Response.Write(string.Format("原内容:{0}<br/>新内容:{1}", content.Replace("<", "&lt;").Replace(">", "&gt;"), newContent.Replace("<", "&lt;").Replace(">", "&gt;")));
}
}
}

该页面运行效果结果如下:

以下是代码片段: 
原内容:<a target="_blank" href="Product.aspx?classId=123"> <a target="_blank" href="Product-view.aspx"> <a target="_blank" href="Product-view.aspx?id=59"> <a target="_blank" href="Product-view.aspx?id=11159">
新内容:<a target="_blank" href="Product-class-123.html"> <a target="_blank" href="Product-view.html"> <a target="_blank" href="Product-view-59.html"> <a target="_blank" href="Product-view-11159.html">
Sterilization Pouch 上海注册公司

转载于:https://www.cnblogs.com/webearly/archive/2011/03/26/1996233.html

利用ASP.NET生成静态页面相关推荐

  1. ASP.NET生成静态页面的方法

    使用ASP.NET生成静态页面的方法有两种,第一种是使用C#在后台硬编码,第二种是读取模板文件,使用字符串替换的方法.第一种方法编码量大,而且维护比较困难.我重点讲解第二种方法.第二种方法的基本思路是 ...

  2. ASP.NET生成静态页面的简单实现

    1.使用场景 当页面的数据不需要经常更改时可采用静态页面方式. 2.使用静态页面的好处 (1)提高网站的访问速度 (2)减轻服务器负担 (3)利于搜索引擎抓取 3.ASP.NET生成静态页面 生成静态 ...

  3. Asp.NET生成静态页面并分页

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

  4. ASP.NET生成静态页面方法大全(1)

    方案1: /// <summary> /// 传入URL返回网页的html代码 /// </summary> /// <param name="Url" ...

  5. ASP.NET生成静态页面方法大全(2)

    模板页Text.html代码 CODE: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > ...

  6. [转]Asp.NET生成静态页面并分页

    比较懒,项目上也没有用到,懒得研究了.今天逛CSDN无意看到有个火柴妞的贴子,就COPY过来了, 我也没仔细看,以后再看吧,算个参考. 原理:替换模板里的特殊字符.(卜:还有其它方法吗?) 1.静态模 ...

  7. ASP.NET生成静态页面方法大全(3)

    2.asp.net代码: //---------------------读html模板页面到stringbuilder对象里---- string[] format=new string[4];//定 ...

  8. Java项目生成静态页面

    文章由本人原创,如需转载,请注明转载出处!本文地址: http://blog.csdn.net/xxd851116/archive/2009/06/24/4293239.aspx 第一次做项目需要生成 ...

  9. php简单的静态页面现成,PHP生成静态页面的简单方法

    页面静态化的方法,分为两种,一种是伪静态,就是url 重写,一种是你真的静态化.下面介绍PHP中页面静态化的方法. 什么是PHP静态化 PHP静态化的简单理解就是使网站生成页面以静态HTML的形式展现 ...

最新文章

  1. Privoxy shadowscocks代理
  2. 亿级用户下的新浪微博平台架构阅读心得
  3. 图形渲染技术分享:《GTA V 》图形分析摘要
  4. Flutter实现帧动画
  5. B2B行业网站电话销售应具备的精神
  6. Unicode 与 UTF-8 之间的转换
  7. python direct_Python-RabbitMQ-direct(广播模式)
  8. 2.两数相加(leetcode-2)
  9. 烟花背景的3D打字魔方相册(末尾附加下载地址)
  10. 【LeetCode - 马化腾】第一次看到马总的代码
  11. Cannot get a STRING value from a NUMERIC cell最新解决方法
  12. 有趣的概率:三门问题
  13. 自考本科英语(二)学习笔记和考试经验
  14. 基于 MATLAB fitcsvm 的 OVR SVM 多分类器实现
  15. vue中clearInterval()清除定时器报timeout.close is not a function错误?
  16. R语言生存分析详解:KM曲线、COX比例风险模型、HR值解读、模型比较、残差分析、是否比例风险验证:基于survival包lung数据集
  17. React实现(Web端)网易云音乐项目(五),错过了真的可惜呀
  18. 2017中国(郑州)国际医药保健品及福祉产业交易会会刊(参展商名录)
  19. 一个阿里P8的程序员,一年能赚多少钱?
  20. 批量检测链接是否有效

热门文章

  1. svn命令在linux下的使用
  2. BEA Workshop Studio有什么用?
  3. android开发 修改标题栏背景_基于.NET的APP开发方式中MobileForm的使用smobiler
  4. python 根据判断产生新列_pandas DataFrame 根据多列的值做判断,生成新的列值实例...
  5. 架构师之路 — 软件架构 — 架构软件的过程
  6. Linux 操作系统原理 — 文件系统 — 虚拟文件系统
  7. 用 Flask 来写个轻博客 (3) — (M)VC_连接 MySQL 和 SQLAlchemy
  8. altium Designer丝印显示汉字,更换字体,数码管风格,镂空效果
  9. 如何在Cordova Android 7.0.0 以下版本集成最新插件 极光插件为例
  10. 8G的U盘轻松帮助你安装win7/win8/win10/xp系统