0

HTMLヘルパーを作成しました

Html.BreadCrumb(IDictionary<string, string> crumbs)

最初の文字列はラベルで、2 番目の文字列は URL です。ヘルパーは、必要な html を作成します (順序付けられていないリスト、最初の要素、現在の要素、最後の要素、デッド要素、セパレーターなどのいくつかのクラス) すべてうまく機能しますが、stringbuilder を作成し、その中のすべての html をポンピングして返すことでこれを行いますstringbuilder の文字列としてのコンテンツ。

この例ではそれほど問題ではないと思いますが、Html ヘルパーが大量の html を生成している場合はどうなるでしょうか。stringbuilder の代わりに Response.Write にプッシュする方法はありませんか?

または、その他の問題/改善点はありますか?

4

3 に答える 3

6

ところで、ASP.NET MVC にはさまざまなレンダリング手法の命名パターンがあります。

それらが何であるかの文字列を返すヘルパーは、それらが何であるかという名前にする必要があります。たとえば、Url.Action() と Html.TextBox() は、それらの正確なアイテムを返します。したがって、これらのヘルパーは <%= %> 構文で使用する必要があります。

出力ストリームに直接レンダリングするヘルパーは、Render で開始する必要があります。たとえば、Html.RenderPartial() です。これらは <% %> 構文で使用されます。

IDisposable パターンを使用するヘルパーは、Begin/End で名前を付ける必要があります。たとえば、Html.BeginForm() と Html.EndForm() です。これらは <% %> 構文でも使用する必要があります。

ありがとう、エイロン

于 2008-11-04T20:58:02.353 に答える
1

文字列を返す代わりに Response.Write を使用することは確かに可能です。例については、MVC ソースの System.Web.Mvc.Ajax.Form (AjaxExtensions.cs 内) のソースを参照してください。

次に、<%= の代わりに <% を使用してヘルパーを呼び出します。

それはもっと速くなりますか?私はそれを疑いますが、テストするのは簡単です。

于 2008-11-03T14:27:51.877 に答える
0

生成する HTML ページのサイズが適切である限り、パフォーマンスの問題はないと思います。実際に数メガバイトのサイズのページを作成し始めたら、なぜそのような巨大な HTML ファイルを作成するのか自問する必要があります。

于 2008-11-03T11:03:52.443 に答える