Html Helperメソッドを実装するより良い方法は?
-
06-07-2019 - |
質問
htmlヘルパーを作成しました
Html.BreadCrumb(IDictionary<string, string> crumbs)
最初の文字列はラベルで、2番目の文字列はURLです。 ヘルパーは、必要なhtmlを作成します(順序付けられていないリスト、最初の要素、現在の要素、最後の要素、無効な要素、セパレータなどのクラス) すべてうまくいきますが、文字列ビルダーを作成し、その中のすべてのhtmlをポンプで送り、文字列ビルダーのコンテンツを文字列として返します。
この例ではそれほど重要ではないと考えていますが、Htmlヘルパーが大量のhtmlを大量に出力している場合はどうでしょうか。文字列ビルダーの代わりにResponse.Writeにプッシュする方法はありませんか?
その他の問題/改善点はありますか
解決
文字列を返す代わりに、Response.Writeを使用することは確かに可能です。例については、MVCソースのSystem.Web.Mvc.Ajax.Form(AjaxExtensions.cs内)のソースを参照してください。
次に、<!> lt;%=の代わりに<!> lt;%でヘルパーを呼び出します。
もっと速くなりますか?疑いがありますが、テストは簡単です。
他のヒント
ところで、ASP.NET MVCにはさまざまなレンダリング手法の命名パターンがあります。
文字列を返すヘルパーは、その名前を指定する必要があります。たとえば、Url.Action()およびHtml.TextBox()はそれらの正確なアイテムを返します。したがって、これらのヘルパーは<!> lt;%=%<!> gt;とともに使用する必要があります。構文。
出力ストリームに直接レンダリングするヘルパーは、Renderで開始する必要があります。たとえば、Html.RenderPartial()。これらは<!> lt;%%<!> gt;で使用されます。構文。
IDisposableパターンを使用するヘルパーには、Begin / Endという名前を付ける必要があります。たとえば、Html.BeginForm()およびHtml.EndForm()。これらは、<!> lt;%%<!> gt;でも使用する必要があります。構文。
ありがとう、 エイロン
作成するHTMLページのサイズが適切である限り、パフォーマンスの問題はないと思います。そして、本当にメガバイトのサイズのページを作成し始めたら、あなたは自分自身に尋ねるべきです、なぜあなたはそのような巨大なHTMLファイルを作成するのですか?