到目前为止,我知道我们有LiteralControl
和PlaceHolder
,我们可以在运行时动态地将控件添加到ASP.NET页面。是否有任何asp.net组件可以编写而不是添加
将HTML代码添加到LiteralControl
我们使用
LiteralControl.Text = "Some HTML/Text"
和PlaceHolder
我们使用
PlaceHolder.Controls.Add(new LiteralControl("Some HTML/Text"))
我在寻找我可以写它像什么我Response.Write(...)
做一个组成部分但我需要它在页面中的指定位置写入。我需要多次调用才能发送小块html代码来输出以节省内存。
,表示该部件的使用将是这样的:
在aspx页面我会把:
<body>
...
<div>
<asp:componentName ID="SomeComp" runat="server" />
</div>
...
</body>
而且在后面的我的代码,我将使用这个(试想一个大数目对于SetCount):
for (int i;i<SetCount;i++){
SomeComp.Write("Some Text/HTML Code");
}
While(Read.Read()){
SomeComp.Write("Some More Text/HTML Code");
}
FYI添加到字符串DOT.NET
非常缓慢,LiteralControl
是不是一个好的选择。
创建的StringBuilder和使用
LiteralControl.Text = StringBuilder.ToString()
是不是一种选择,因为它在内存中保存的所有字符串,直到你给它分配的控制和处置它。
PlaceHolder.Controls.Add(new LiteralControl("Some HTML/Text"))
是不是一种选择,因为它创造了HTML的每个块我给它添加一个LiteralControl和它再次使用大量的内存,对我来说是有限的。
我的Intranet网站每秒约有500次调用同一页面,它会在内存使用中产生巨大的峰值,使IIS停止响应其他应用程序的请求。
也许在jQuery中使用'div'会有帮助吗? – 2012-01-14 03:46:41
所以你想要LiteralControl的行为,但更快?由于它的渲染调用只是output.Write(this._text),我不确定你将如何变得更快,并且仍然是一个(行为良好的)控件。或许<%= foo %>会更适合你? – 2012-01-14 05:57:41
@JamesManning,谢谢你的想法,'LiteralControl'很快,但是它的输入是字符串,并且向该输出添加了字符串'+'。我相信你知道'DOT.NET'处理字符串的速度很慢。我正在看的案例是LiteralControl.Append('Some HTML/Text'),它直接写入页面中的指定区域。 – AaA 2012-01-15 04:08:01