我的同事在正确格式化和缩进的html传送到客户端浏览器时非常“热”。这样,页面源很容易被人阅读。
首先,如果我的网站中有许多不同区域使用的局部视图,渲染引擎是否应该为我自动格式化缩进(ala在XmlTextWriter上设置Formatting属性)?
其次,我的同事已经创建了许多用于写入响应的HtmlHelper扩展方法。这些都需要将CurrentIndent参数传递给它们。这对我来说有点不对劲。
任何人都可以帮忙吗?
答案 0 :(得分:6)
这听起来很难维护。如果有人从HTML中删除了外部元素,是否有人会费心更新代码中的 CurrentIndent 值?目前,大多数开发人员通常都会通过Firebug查看他们的HTML,它会使用缩进自动格式化标记。
如果您确实想通过格式化过滤器对HTML进行后处理,请尝试.NET port of HTML Tidy。
答案 1 :(得分:3)
浏览器绝对不关心HTML缩进的美妙程度。更重要的是,深度嵌套(因此大量缩进)HTML会给页面带来轻微的开销(以下载的字节数计)。当然,您可以随时压缩响应,并且良好缩进的HTML可以更好地支持。
答案 2 :(得分:3)
即使出于某种疯狂的原因,有必要“正确”缩进,也不应该像你的同事所建议的那样完成。
附加到ReleaseRequestState
对象的HttpApplication
事件的HttpModule应该可以解决问题。当然,你需要提出一个处理这种缩进的过滤器。
public class IndentingModule: IHttpModule {
public void Dispose() {
}
public void Init(HttpApplication context) {
context.ReleaseRequestState +=
new EventHandler(context_ReleaseRequestState);
}
void context_ReleaseRequestState(object sender, EventArgs e) {
HttpApplication app = (HttpApplication)sender;
app.Response.Filter = new IndentingFilter(app.Response.Filter)
}
}
答案 3 :(得分:2)
不要浪费时间来实现一个影响所有HTTP请求的合适的缩进解决方案(从而增加CPU和带宽开销),而是向同事建议他使用HTML美化器。这样一个关心它的人就是那个付出代价的人。
This Firefox plugin是一个HTML验证器,它还包含一个美化功能。请参阅文档here。