Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在asp.net的多个父级中添加Html控件_Asp.net_Vb.net_Html Lists_Controls - Fatal编程技术网

在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来节省时间会很奇怪?还是没有?好吧,没有。它必须创建一个新对象,然后在所有非静态属性上运行复制操作,很可能是通过反射。与仅仅创建一个新对象相比,它在理论上应该消耗更多的时间