0

を使用してアイテムの複雑なリストを生成しようとしていListViewます。すべてのアイテムについて、このようなものを作成する必要があります

<div>
  <ul>
    <li>foo<li>
    <li>bar<li>
    .... Dynamic count of <li>
  <ul>
  <span>Some dynamic text</span>
  .. bunch of other dynamicly generated html
</div>

私の質問は、このような文字列連結を使用してhtml.Byを生成するためのより良い方法は何ですか?

StringBuilder sb = new StringBuilder();
sb.Append("<div>");
.......
sb.Append("</div>")

または、次のように HtmlGenericControl を使用します。

   HtmlGenericControl htmlItem = new HtmlGenericControl( "div" );
   ....

   using( TextWriter textWriter = new StringWriter( ) )
        using( HtmlTextWriter htmlWriter = new HtmlTextWriter( textWriter ) )
        {
            HtmlGenericControl htmlItem = null;

            CreateMenuItem( menuItem, 0, null );

            htmlItem.RenderControl( htmlWriter );

            return textWriter.ToString( );
        }
4

2 に答える 2

2

これにより、より多くの読みやすさが得られるため、私はこの方法を好みます。これを見ると、出力がどのように見えるかを簡単に想像できます。

StringBuilder sb = new StringBuilder();
sb.Append("<div>");
sb.Append("<ul>");
sb.Append("<li>Item1</li>");
sb.Append("<li>Item2</li>");
sb.Append("<li>Item3</li>");
sb.Append("</ul>");
sb.Append("</div>");
于 2012-04-11T18:05:50.817 に答える
2

HtmlTextWriter が優れている理由は次のとおりです。

  1. HtmlTextWriter は最もクリーンで、レンダリング時にマークアップが適切にインデントされます。HtmlTextWriter が出力ストリームに直接書き込むため、パフォーマンスに影響があります。
  2. HtmlTextWriter が HTML の自動エンコードをサポート

ToString が呼び出されるまで、Stringbuilder は出力ストリームに書き込みません。

于 2012-04-11T18:20:24.277 に答える