Asp.net Can';t动态添加Web用户控件

Asp.net Can';t动态添加Web用户控件,asp.net,Asp.net,我了解页面生命周期,以及如果我想利用viewstate,我需要如何在page\u init上添加动态控件。我已经读过很多关于这个问题的话题,但都不是很有用 我必须使用这样的解决方案:我有一组用户控件,它们继承一个接口,然后动态地将它们添加/删除到一个文本控件中。我无法在页面中立即加载它们,因为以后我必须根据用户操作删除/添加它们。这些控件包含一个按钮,只有当我在page\u init或page\u load方法中生成此用户控件时,才会触发其回发事件处理程序 因此,在一些按钮单击(我更新控件列表)

我了解页面生命周期,以及如果我想利用viewstate,我需要如何在
page\u init
上添加动态控件。我已经读过很多关于这个问题的话题,但都不是很有用

我必须使用这样的解决方案:我有一组用户控件,它们继承一个接口,然后动态地将它们添加/删除到一个文本控件中。我无法在
页面中立即加载它们,因为以后我必须根据用户操作删除/添加它们。这些控件包含一个按钮,只有当我在
page\u init
page\u load
方法中生成此用户控件时,才会触发其回发事件处理程序

因此,在一些
按钮单击
(我更新控件列表)事件处理程序中进行必要的处理后,我必须以某种方式重新初始化/重新启动页面的生命周期。正如我发现的那样,这是不可能的。重定向到同一个页面不是一个解决方案,因为在这种情况下,我将丢失整个viewstate


所以我被卡住了,你能帮我解决吗?

如果我理解正确,你需要实例化动态控件来检索它们的视图状态,但是你依赖视图状态来确定如何实例化动态控件

你可以利用ASP.NET吗?使用会话状态存储从中生成动态控件的信息

处理按钮单击事件时,销毁并重新创建所有控件,然后在会话状态下存储重新创建控件所需的所有信息


下次页面实例化时,
page_init
函数可以检查会话状态中是否有任何相关信息,并使用它重新创建控件。

如果我理解正确,您需要实例化动态控件以检索其视图状态,但是您依赖于视图状态来确定如何实例化动态控件

你可以利用ASP.NET吗?使用会话状态存储从中生成动态控件的信息

处理按钮单击事件时,销毁并重新创建所有控件,然后在会话状态下存储重新创建控件所需的所有信息


下次页面实例化时,
page\u init
函数可以检查会话状态中是否有任何相关信息,并使用此信息重新创建控件。

听起来您可以从创建会话状态中获益

最近,我在动态创建文本框的基础上回答了一个类似的问题,其中我提供了一个相当详细的示例

见:


希望这能有所帮助。

听起来你可以从创建一个

最近,我在动态创建文本框的基础上回答了一个类似的问题,其中我提供了一个相当详细的示例

见:


希望这有帮助。

实际上,我利用会话状态并存储用于生成用户控件的类列表。但是,当用户单击其中一个用户控件中的“close”按钮时,我会在page_init之后在相应的事件处理程序中更新会话状态,因此我会在下一页返回之前看到已删除的用户控件。实际上,我使用会话状态并存储用于生成用户控件的类列表。但当用户单击其中一个用户控件中的“close”按钮时,我会在page_init之后更新相应事件处理程序中的会话状态,因此,在下一页返回之前,我将看到已删除的用户控件。您的意思是我应该创建一个复合控件,该控件在页面上是静态的,并且将动态填充我的web用户控件吗?那么,在我的例子中,它将像一个高级中继器或文字?或者我可以像处理用户控件一样处理一组复合控件吗?将您的CompositeControl(静态)添加到页面,该页面将充当所有动态控件的容器,您可以使用CreateChildControls方法根据需要生成。您的意思是我应该创建一个复合控件,该控件在页面上是静态的,并且将动态填充我的web用户控件吗?那么,在我的例子中,它将像一个高级中继器或文字?或者我可以像处理用户控件一样处理一组复合控件吗?将您的CompositeControl(静态)添加到页面,该页面将充当所有动态控件的容器,您可以使用CreateChildControls方法根据需要生成。您是在谈论自定义服务器控件还是web用户控件?您是在谈论自定义服务器控件还是web用户控件?