我正在尝试使用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( );
}
答案 0 :(得分: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>");
答案 1 :(得分:2)
HtmlTextWriter很好,因为:
Stringbuilder在写入ToString之前不会写入输出流。