2

我的同事在将正确格式化和缩进的 html 交付给客户端浏览器时非常“热”。这是为了使页面源代码易于人类阅读。

首先,如果我有一个在我的站点的多个不同区域中使用的局部视图,渲染引擎是否应该为我自动格式化缩进(ala 在 XmlTextWriter 上设置 Formatting 属性)?

其次,我的同事创建了许多用于写入响应的 HtmlHelper 扩展方法。这些都需要将 CurrentIndent 参数传递给它们。这对我来说是错误的。

有人能帮忙吗?

4

4 回答 4

6

这听起来很难维护。如果有人从 HTML 中删除了一个外部元素,有人会费心更新代码中的CurrentIndent值吗?如今,大多数开发人员通常还是通过 Firebug 查看他们的 HTML,Firebug 会自动使用缩进格式化标记。

如果您真的想通过格式化过滤器对 HTML 进行后处理,请尝试使用HTML Tidy 的 .NET 端口

于 2009-10-20T08:25:42.873 回答
3

浏览器绝对不在乎 HTML 缩进有多漂亮。更重要的是,深度嵌套(因此严重缩进)HTML 给页面增加了一点开销(就下载字节而言)。当然,您始终可以压缩响应,并且更好地支持缩进的 HTML。

于 2009-10-20T07:58:27.527 回答
3

即使出于某种疯狂的原因,它必须“正确”缩进,也不应该按照你的同事建议的方式进行。

ReleaseRequestState附加到对象事件的HttpModuleHttpApplication应该可以解决问题。当然,您需要想出一个过滤器来处理这种缩进。

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)
    }
}
于 2009-10-20T08:16:47.363 回答
2

与其浪费时间实施会影响所有 HTTP 请求(从而增加 CPU 和带宽开销)的适当缩进解决方案,不如建议您的同事使用 HTML 美化器。这样一来,关心它的人就是为此付出代价的人。

这个 Firefox 插件是一个 HTML 验证器,还包括美化功能。请参阅此处的文档。

于 2009-10-20T08:29:56.377 回答