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 的更好方法是什么。通过使用这样的字符串连接

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 回答