字符串连接或 HtmlGenericControl html 控件
本文关键字:html 控件 HtmlGenericControl 连接 字符串 | 更新日期: 2023-09-27 18:30:42
我正在尝试使用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( );
}
我更喜欢这种方式,因为这给了我更多的可读性。看着这个,我可以很容易地想象,我的输出会是什么样子。
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>");
HtmlTextWriter 之所以好,是因为:
- HtmlTextWriter是最干净的,标记很好地缩进了当它被呈现时。 当 HtmlTextWriter 直接写入输出流时,会对性能产生影响。
- HtmlTextWriter 支持自动编码 HTML
字符串生成器不会写入输出流,直到调用 ToString 为止。