我正在尝试找到生成和输出html的最佳实践,这需要首先获取数据库查询以获取信息。目前在aspx页面中我有一个带有runat服务器的div:
<div runat="server" id="leaflet"></div>
现在只是作为开始做一些测试,我有一个在page_load上运行的方法基本上可以:
private void BuildLeaflet(string qnid)
{
//gets leaflet details
QueryLeafletDetails();
//return concatenated content string
leaflet.InnerHtml "<h1>" + dr["LSC Descriptor"] + "</h1>";
}
在真正的解决方案中,返回是大约10个字段的串联,有些很长,因为它们是内容。
我绝不认为这是最好的解决方案,但是什么呢?一个StringBuilder?我可以依次将每个部分写入网站,避免方法中的连接吗?服务器是否最好?
编辑:忘了把我的一些内容部分包含简单(有限)的html,如段落,列表...这样我就可以轻松制作用于网页和打印的文档,我只是使用不同的样式表。
答案 0 :(得分:4)
我会使用<asp:Literal runat="server" enableViewState="false" id="leaflet" />
。这不会在页面上生成任何标记,也不会填充ViewState中的所有文本。
是的,如果你需要连接很多长字符串,请使用StringBuilder。这将提高内存效率。
另一个解决方案是看看你是否可以在页面上做一些固定的标记,并将每个数据库字段的内容放在它自己的控件中(<asp:Literal />
?)。
答案 1 :(得分:1)
如果字段数固定(并且相对较小),我将使用string.Format,否则使用StringBuilder。代码的可读性将是我的指南,而不是性能。如果您打算重用它,您可能还想考虑将其抽象为UserControl。然后你可以赋予它可设置的属性并在控件中构建渲染逻辑,以避免重复自己。
答案 2 :(得分:0)
各种各样的人对此进行了基准测试 - 对于&lt; 4项,iirc格式是好的,对于&lt; 7的字符串构建的简单连接,
我强烈建议不要将HTML创建为字符串btw。