MVC下压缩输入的HTML内容
在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内容相关推荐
- php输入域无法对齐,下划线输入内容后怎么对齐
下划线输入内容后设置对齐的方法:首先打开Word:然后依次选择"菜单栏->插入->表格":接着将内容分别输入表格中,并调整表格的列宽等格式:最后右键选择"边框 ...
- jquery ajax下拉联动,jQuery Ajax MVC 下拉框联动
无刷新下拉框联动方法: Controllers代码 public JsonResult DH_Change(string DH_ID) { List TeamLeaderList = FinanceD ...
- ASP.NET MVC下的四种验证编程方式[续篇]
ASP.NET MVC下的四种验证编程方式[续篇] 原文:ASP.NET MVC下的四种验证编程方式[续篇] 在<ASP.NET MVC下的四种验证编程方式>一文中我们介绍了ASP.NET ...
- Windows下压缩和解压命令
Winzip和Winrar除了提供丰富灵活的图形界面操作功能外,二者都还具备从命令行模式进行文件的压缩与解压缩操作功能,极大的方便了我们在批处理文件中调用压缩软件.以下给出了二者的常用命令行使用 ...
- linux压缩文件的类型,linux下压缩文件的类型(转)
linux下压缩文件的类型(转) (2012-03-08 16:18:30) 标签: 杂谈 Linux下有相当多的压缩命令,初学的我们开始总是摸不清头脑,我们知道在Linux下的后缀名是没有什么很特殊 ...
- Java基础(二):集合、IO流(Zip压缩输入/输出流等)、File文件类、反射、枚举
Java基础(一):编译和解释.数据类型.变量作用域.String常用方法.数组.面向对象.异常 Java基础(二):集合.IO流(Zip压缩输入/输出流等).File文件类.反射.枚举 Java异常 ...
- ASP.NET MVC下的异步Action的定义和执行原理
Visual Studio提供的Controller创建向导默认为我们创建一个继承自抽象类Controller的Controller类型,这样的Controller只能定义同步Action方法.如果我 ...
- 搜狗输入法在idea打不了汉字_IDEA下搜狗输入法输入中文时卡着不动的参考解决方法...
在IntelliJ IDEA工具的java编辑窗口,给代码增加注释时发现,输入中文时,搜狗输入法界面不动,一直卡着,如图: 我想输入"根据"两个字,但搜狗输入法界面一直卡着不刷新, ...
- sublime 下 解决Vintage模式下,normal 模式下中文输入的问题。
* sublime 下 解决Vintage模式下,normal 模式下中文输入的问题.* 大家好,相信有不少sublime 铁粉在vintage 模式下,使用vim 快捷键时,在转换normal 与 ...
- linux解压命令rar,Linux下压缩与解压命令详解
本文为大家分享了Linux下压缩与解压缩命令,供大家参考,具体内容如下 [tar命令] 解压:tar -zxvf FileName.tar 压缩:tar -czvf FileName.tar DirN ...
最新文章
- 美加州希望立法叫停加密手机
- 20应用统计考研复试要点(part43)--概率论与数理统计
- FreeRTOS学习及移植笔记之二:在IAR和STM32F103VET上移植FreeRTOS
- 告诉你,为什么要娶物理系御姐?
- NFrog[NHibernate代码工具]发布第一个版本
- Eclipse java中一个工程引用另一个工程的类
- 疫时急速挑战,AI 落地大考
- 【转】java中的Map集合
- 软件推荐:论文翻译阅读 + 文献管理 + markdown笔记 + 多设备同步 + 一键导出bib参考文献
- Win10 代码行数统计工具CLOC的安装和使用
- mysql简单触发器实例_MySQL 触发器简单实例
- 70周年国庆,34个省级行政区前来祝贺
- HWADDR配置错误导致network重启失败处理
- 廊坊金彩教育:店铺标题怎么写
- 面试官:为什么 0.1 + 0.2 == 0.300000004 ?
- 在iPhone、iPad或Mac上怎样重命名蓝牙设备?
- 免费换背景app、在线修改图片像素、在线照片压缩网站
- 【UE Unreal Camera】【保姆级教程二】手把手教你通过UE获取摄像头帧数据
- Qt编译通过,运行时出现the process was ended forcefully的crashed问题
- 400KN液压绞车液压系统设计 全套毕业设计(开题报告+任务书+说明书+外文翻译+CAD图纸)