2

私の同僚は、適切にフォーマットされ、インデントされた html がクライアント ブラウザに配信されることに非常に「熱中」しています。これは、人間がページのソースを簡単に読み取れるようにするためです。

まず、サイト内のさまざまな領域で使用される部分ビューがある場合、レンダリング エンジンは自動的にインデントをフォーマットする必要がありますか (XmlTextWriter の Formatting プロパティを設定します)。

次に、私の同僚は、応答に書き込むための多数の HtmlHelper 拡張メソッドを作成しました。これらはすべて CurrentIndent パラメータを渡す必要があります。これは私には間違ったにおいがします。

誰でもこれを手伝ってもらえますか?

4

4 に答える 4

6

これは維持するのが難しいようです。誰かがHTMLから外部要素を削除した場合、誰かがコードのCurrentIndent値を更新するのをわざわざしますか?最近では、ほとんどの開発者は通常、Firebugを介してHTMLを表示します。これにより、マークアップがインデントで自動的にフォーマットされます。

本当にフォーマットフィルターを介してHTMLを後処理したい場合は、HTMLTidyの.NETポートを試してください。

于 2009-10-20T08:25:42.873 に答える
3

ブラウザーは、HTML のインデントがどれほど美しいかはまったく気にしません。さらに、深くネストされた (したがって大きくインデントされた) HTML は、ページにわずかなオーバーヘッド (ダウンロードするバイト数) を追加します。確かに、いつでもレスポンスを圧縮できますし、適切にインデントされた HTML の方がサポートしやすいです。

于 2009-10-20T07:58:27.527 に答える
3

何らかのクレイジーな理由で「適切に」インデントする必要がある場合でも、同僚が提案する方法でインデントを行うべきではありません。

ReleaseRequestStateオブジェクトのイベントにアタッチされた HttpModule がうまくいくHttpApplicationはずです。そしてもちろん、このインデントを処理するフィルターを考え出す必要があります。

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 に答える