- 本站大部分内容从网上收集,收集目的仅供研究、学习。涉及版权或不希望收录您的文章请您及时与我联系。
- 本站IM群,请自行选择。请各位朋友按照自己喜好加入。加入群后请及时发言,防止被清理。谢谢您的合作!!!
- QQ群:Y①WEB开发(ASP.NET)号码:7351660 QQ群:Y②WEB开发(ASP+.NET)号码:11864905
- QQ群:Y③WEB开发(DIV+CSS)号码:16610506 QQ群:Y④WEB开发(JS+AJAX)号码:16143998
- QQ群:Y⑤WEB开发(新手)号码:12777715 MSN群:yaosansi[at]126.com
照理说在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 }
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 }
2 {
3 protected override void Render(HtmlTextWriter writer)
4 {
5 // 替换writer为我们自定义的类
6 writer = new FilterHtmlTextWriter(writer.InnerWriter, "");
7 base.Render(writer);
8 }
9 //

10 }
至此大功告成,让我们重新看看页面的输出,哇塞,讨厌的空格果然变少了@_@,如下图所示:
订阅本站,阅读更多文章