过滤ASP.NET输出HTML中的无用空格

刚才“不小心”检查了一下ASP.NET生成的代码,惊讶地发现ASP.NET输出的代码居然如此地不紧凑,在标签之间有无数的空格和制表符(TAB),特别是用了嵌套表格之后,那景象真是惨不忍睹啊,有图为证:


照理说在ASP.NET生成的代码中添加这么多无用的空格/tab可能是为了使生成的HTML代码更具可读性,但是由此带来的问题就是使输出的代码变大了,在带宽有限的今天简直就是一种犯罪,浪费用户的钱财,影响用户的体验嘛!而且ASP.NET属于服务器端编程,不可能会直接编辑最终生成的HTML代码,就算把所有的空格/Tab都去了,也不会带来任何不好的影响的吧!?

基于以上考虑,祭出Reflector,果然发现HtmlTextWriter中有Indent属性控制着缩进大小,而且幸运的是该属性还是public类型的,真是天助我也,花了几分钟时间,捣鼓出如下代码:
 1  public   class  FilterHtmlTextWriter : HtmlTextWriter
 2  {
 3       public  FilterHtmlTextWriter(TextWriter writer,  string  tabString)
 4          :  base (writer, tabString)
 5      {
 6      }
 7 
 8       public   new   int  Indent
 9      {
10           get  {  return   0 ; }            //  始终返回0
11           set  {  base .Indent  =   0 ; }     //  始终置0
12      }
13  }

然后重载页面的Render方法(如果所有页面有公共的基类的话就更好了),加入一行代码,如下:
 1  public  partial  class  _Default : System.Web.UI.Page
 2  {
 3       protected   override   void  Render(HtmlTextWriter writer)
 4      {
 5           //  替换writer为我们自定义的类
 6          writer  =   new  FilterHtmlTextWriter(writer.InnerWriter,  "" );
 7           base .Render(writer);
 8      }
 9       //  
10  }

至此大功告成,让我们重新看看页面的输出,哇塞,讨厌的空格果然变少了@_@,如下图所示:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值