我有一个页面,我想在其中动态添加 asp.net 用户控件。场景是我们希望在控件的特定事件上,它会自行处理并在页面中加载另一个控件。
我无法解决如何做到这一点?
有人有好的想法吗?
Webforms 还是 ASP.NET MVC?我会假设网络表单...
尝试使用 CompositeControl。如果涉及数据绑定,您可以使用 DataBoundCompositeControl。在 CreateCHildren 方法中,您可以动态创建控件并将它们添加到子集合中。下面是一个我创建过的相当复杂的 DataBoundCompositeControl 的示例(在内部子控件上进行事件处理):
这实际上是一件很难做到的事情。只要记住每次都重建所有子控件并存储控件的状态,以便您可以正确地重新创建所有内容。
您将在回发时重建所有内容两次(并且在第一次 GET 上重建一次)。一次将控件重新创建到以前的状态,第二次处理数据绑定和事件处理后的更改。
让我们假设这种情况:
--- 回传 ---
您可以在 Session 实例中存储一个变量来确定需要加载哪个控件。
在购物车页面的 PageInit 中检索 Session 变量并加载相应的控件(步骤 1 和 2)。确保在 PageInit 中执行此操作,以便 ASP.NET 触发事件。
然后在装运控件的事件处理程序中更新 Session 变量(步骤 3)。
在购物车页面的 Page_LoadComplete 中,您处理装运控件(第 4 步)并加载付款控件(第 5 步)。
Scott Mitchell 写了一篇关于这种情况的精彩文章:http: //scottonwriting.net/sowBlog/posts/3962.aspx