zoukankan      html  css  js  c++  java
  • 过滤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 }

    至此大功告成,让我们重新看看页面的输出,哇塞,讨厌的空格果然变少了@_@,如下图所示:


  • 相关阅读:
    iOS判断为空或者只为空格
    一个CRM OData的性能问题分析
    什么是SAP UI5的Component-preload.js
    SAP CRM的状态管理和权限控制的集成
    如何使用SAP Intelligent Robotic Process Automation自动操作Excel
    利用S_MEMORY_INSPECTOR分析内存泄漏问题
    SAP CRM WebClient UI的搜索条件是怎么渲染出来的
    SAP CRM WebClient UI的内存清理策略分析
    SAP CRM产品主数据应用里value node和model node的转换
    如何查找SAP Fiori UI上某个字段对应的底层数据库表
  • 原文地址:https://www.cnblogs.com/leafyoung/p/640882.html
Copyright © 2011-2022 走看看