1

私は Web 開発に MVC 3 を使用しています。カスタム ヘルパー クラスを使用して HTML を作成すると、見た目が非常に悪くなります。

例: ヘルパーを使用してリストを作成すると、次のような結果が得られます。

<ul>
<li>some link 1</li>
<li>some link 2</li>
<li>some link 3</li>
<li>some link 4</li>
</ul>

私が必要とするのは、次のようにフォーマットされた HTML です。

<ul>
   <li>some link 1</li>
   <li>some link 2</li>
   <li>some link 3</li>
   <li>some link 4</li>
</ul>

これを達成するために利用できるネイティブな方法はありますか?

4

1 に答える 1

1

これはレンダリングされたマークアップの人間の読者にのみ影響するため、問題にはなりません。読みやすい HTML があると便利であることは否定しませんが、この部分を「正しく」作成するためにどれだけの時間を費やすことを正当化できますか?

これには主に 2 つの解決策があります。

最初 - 生成された HTML を処理する

このアプローチではMvcHtmlString、ヘルパー関数から返された を取得し、生成された HTML フラグメントを HTML フォーマット ライブラリを介して実行します。このアプローチは、インデントされていない HTML をレンダリングし、解析して分析し、再レンダリングする必要があるため、非常に遅くなります。コードを再フォーマットするために重いライブラリを使用している場合、または処理のために外部ライブラリに送信している場合 (例: HtmlTidy 実行可能ファイル)、ページの読み込み時間に最大 10 ミリ秒かかることが予想されます。

2 つ目 - HTML ヘルパーを修正する

もちろん、最善の方法は、コードをインデントするように HTML ヘルパーを再実装することです。幸いなことに、HTML ヘルパーはそれほど複雑になる傾向はありません。生成されたソースを (Reflector を使用して) コピーし、適切なインデントで新しいヘルパー メソッドに貼り付けることはそれほど難しくありません。

もちろん、これは<ul>すべての<li>要素を含む全体が単一のヘルパー呼び出しによって作成されていることを前提としており、ビュー ファイルでインデントを自分で省略しているわけではありません。

于 2012-12-17T09:11:20.520 に答える