在MVC下如何压缩输出的HTML代码,替换HTML代码中的空白,换行符等字符?

1.首先要了解MVC是如何输出HTML代码到客户端的,先了解下Controller这个类,里面有很多方法,我们需要的主要有两个:OnActionExecuting和OnResultExecuted

2.新建一个基类,继承自:System.Web.Mvc.Controller,代码如下:

using System.IO;
using System.Text;
using System.Text.RegularExpressions;
using System.Web;
using System.Web.Mvc;
using System.Web.UI;namespace WebApplication2.Controllers
{/// <summary>/// Base/// </summary>public class BaseController : Controller{#region Private/// <summary>/// HtmlTextWriter/// </summary>private HtmlTextWriter tw;/// <summary>/// StringWriter/// </summary>private StringWriter sw;/// <summary>/// StringBuilder/// </summary>private StringBuilder sb;/// <summary>/// HttpWriter/// </summary>private HttpWriter output;#endregion/// <summary>/// 压缩html代码/// </summary>/// <param name="text">html代码</param>/// <returns></returns>private static string Compress(string text){Regex reg = new Regex(@"\s*(</?[^\s/>]+[^>]*>)\s+(</?[^\s/>]+[^>]*>)\s*");text = reg.Replace(text, m => m.Groups[1].Value + m.Groups[2].Value);reg = new Regex(@"(?<=>)\s|\n|\t(?=<)");text = reg.Replace(text, string.Empty);return text;}/// <summary>/// 在执行Action的时候,就把需要的Writer存起来/// </summary>/// <param name="filterContext">上下文</param>protected override void OnActionExecuting(ActionExecutingContext filterContext){sb = new StringBuilder();sw = new StringWriter(sb);tw = new HtmlTextWriter(sw);output = (HttpWriter)filterContext.RequestContext.HttpContext.Response.Output;filterContext.RequestContext.HttpContext.Response.Output = tw;base.OnActionExecuting(filterContext);}/// <summary>/// 在执行完成后,处理得到的HTML,并将他输出到前台/// </summary>/// <param name="filterContext"></param>protected override void OnResultExecuted(ResultExecutedContext filterContext){string response = Compress(sb.ToString());output.Write(response);}}
}

2.需要压缩的页面控制器,集成这个BaseController,就可以了,运行后的网页源代码如下图:

MVC下压缩输入的HTML内容相关推荐

  1. php输入域无法对齐,下划线输入内容后怎么对齐

    下划线输入内容后设置对齐的方法:首先打开Word:然后依次选择"菜单栏->插入->表格":接着将内容分别输入表格中,并调整表格的列宽等格式:最后右键选择"边框 ...

  2. jquery ajax下拉联动,jQuery Ajax MVC 下拉框联动

    无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List TeamLeaderList = FinanceD ...

  3. ASP.NET MVC下的四种验证编程方式[续篇]

    ASP.NET MVC下的四种验证编程方式[续篇] 原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET ...

  4. Windows下压缩和解压命令

     Winzip和Winrar除了提供丰富灵活的图形界面操作功能外,二者都还具备从命令行模式进行文件的压缩与解压缩操作功能,极大的方便了我们在批处理文件中调用压缩软件.以下给出了二者的常用命令行使用 ...

  5. linux压缩文件的类型,linux下压缩文件的类型(转)

    linux下压缩文件的类型(转) (2012-03-08 16:18:30) 标签: 杂谈 Linux下有相当多的压缩命令,初学的我们开始总是摸不清头脑,我们知道在Linux下的后缀名是没有什么很特殊 ...

  6. Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举

    Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...

  7. ASP.NET MVC下的异步Action的定义和执行原理

    Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我 ...

  8. 搜狗输入法在idea打不了汉字_IDEA下搜狗输入法输入中文时卡着不动的参考解决方法...

    在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,一直卡着,如图: 我想输入"根据"两个字,但搜狗输入法界面一直卡着不刷新, ...

  9. sublime 下 解决Vintage模式下,normal 模式下中文输入的问题。

    * sublime 下 解决Vintage模式下,normal 模式下中文输入的问题.* 大家好,相信有不少sublime 铁粉在vintage 模式下,使用vim 快捷键时,在转换normal 与 ...

  10. linux解压命令rar,Linux下压缩与解压命令详解

    本文为大家分享了Linux下压缩与解压缩命令,供大家参考,具体内容如下 [tar命令] 解压:tar -zxvf FileName.tar 压缩:tar -czvf FileName.tar DirN ...

最新文章

  1. 美加州希望立法叫停加密手机
  2. 20应用统计考研复试要点(part43)--概率论与数理统计
  3. FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS
  4. 告诉你,为什么要娶物理系御姐?
  5. NFrog[NHibernate代码工具]发布第一个版本
  6. Eclipse java中一个工程引用另一个工程的类
  7. 疫时急速挑战,AI 落地大考
  8. 【转】java中的Map集合
  9. 软件推荐:论文翻译阅读 + 文献管理 + markdown笔记 + 多设备同步 + 一键导出bib参考文献
  10. Win10 代码行数统计工具CLOC的安装和使用
  11. mysql简单触发器实例_MySQL 触发器简单实例
  12. 70周年国庆,34个省级行政区前来祝贺
  13. HWADDR配置错误导致network重启失败处理
  14. 廊坊金彩教育:店铺标题怎么写
  15. 面试官:为什么 0.1 + 0.2 == 0.300000004 ?
  16. 在iPhone、iPad或Mac上怎样重命名蓝牙设备?
  17. 免费换背景app、在线修改图片像素、在线照片压缩网站
  18. 【UE Unreal Camera】【保姆级教程二】手把手教你通过UE获取摄像头帧数据
  19. Qt编译通过,运行时出现the process was ended forcefully的crashed问题
  20. 400KN液压绞车液压系统设计 全套毕业设计(开题报告+任务书+说明书+外文翻译+CAD图纸)

热门文章

  1. 信息检索1.2--几个实用的限定词,site title URL
  2. 分享个PS快速替换背景颜色的方法
  3. 基于jsp+java+ssm的大学生缴费系统
  4. 黑桃符号java怎么打印出来_java入门基础(四)
  5. 蓝桥杯 算法训练 跳马
  6. 共模信号 差模信号 差动放大器
  7. Python制作个性二维码
  8. linux notifier
  9. 机器学习-算法原理与编程实践(郑捷.著)-阅读笔记
  10. canvas 画布标签