刚才“不小心”检查了一下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
}
至此大功告成,让我们重新看看页面的输出,哇塞,讨厌的空格果然变少了@_@,如下图所示:
转载请注明原文地址: https://ibbs.8miu.com/read-19234.html