在asp.net的多个父级中添加Html控件
我正在创建一个新的无序列表,如下所示:在asp.net的多个父级中添加Html控件,asp.net,vb.net,html-lists,controls,Asp.net,Vb.net,Html Lists,Controls,我正在创建一个新的无序列表,如下所示: Using htmlUL As New HtmlGenericControl("ul") End Using 在关闭“Using”子句之前,必须将列表添加到父控件中: Using htmlUL As New HtmlGenericControl("ul") 'Some Code Here parent1.Controls.Add(htmlUl) End Using 在我向更多家长添加控制之前,一切正常: Using htmlUL As
Using htmlUL As New HtmlGenericControl("ul")
End Using
在关闭“Using”子句之前,必须将列表添加到父控件中:
Using htmlUL As New HtmlGenericControl("ul")
'Some Code Here
parent1.Controls.Add(htmlUl)
End Using
在我向更多家长添加控制之前,一切正常:
Using htmlUL As New HtmlGenericControl("ul")
'Some Code Here
parent1.Controls.Add(htmlUl)
parent2.Controls.Add(htmlUl) '<--- Only gets added in the last parent's collection
End Using
使用htmlUL作为新的HtmlGenericControl(“ul”)
“这里有一些代码
parent1.Controls.Add(htmlUl)
parent2.Controls.Add(htmlUl)ASP.NET不支持类似于的场景,在多个地方使用了相同的控件对象
。我认为这里的原因是在页面生命周期的后期识别控件的问题-此控件必须在不同的父级下呈现,并且具有不同的ID等。看起来这是一个非常复杂和危险的用例
但是,在页面上克隆控件时,这里和那里都编写了一些变通方法。例如,签出以下线程:
beign说过,在您的例子中,最简单的事情就是为每个父控件创建新列表。您不需要复制任何特定的属性或数据,因此不需要在上述解决方案中克隆开销。是否要求这是同一个对象?或者您只需要在每个父控件中都有一个列表?它必须是相同的,我可以简单地创建一个函数,将列表作为新控件返回,然后将其添加到每个父控件中,但这会大大降低我的性能:/实际上,这是您需要做的。ASP.NET不支持用例在多个地方使用的同一控件对象
。或者,您可以尝试在控件上调用MemberwiseClone
,但在将列表添加到页面之前,请确保这样做。然而,这是一件奇怪的事情,所以最安全的选择是每次需要时创建单独的控件为什么使用MemberwiseClone来节省时间会很奇怪?还是没有?好吧,没有。它必须创建一个新对象,然后在所有非静态属性上运行复制操作,很可能是通过反射。与仅仅创建一个新对象相比,它在理论上应该消耗更多的时间