【问题标题】:Event handling in Dynamic asp.net user Control动态 asp.net 用户控件中的事件处理
【发布时间】:2008-12-22 06:18:18
【问题描述】:

我有一个页面,我想在其中动态添加 asp.net 用户控件。 场景是我们希望在控件的特定事件上,它会自行处理并在页面中加载另一个控件。

我无法解决如何执行此操作?

有人有好的想法吗?

【问题讨论】:

    标签: asp.net events dynamic controls delegates


    【解决方案1】:

    让我们假设这种情况:

    • 您有一个购物车页面。
    • 装运控制已加载。
    • 用户点击下一步按钮。

    --- 回传 ---

    1. 购物车页面加载完毕
    2. 装运控制已加载。
    3. “点击”事件由发货控制处理。
    4. 装运控制已释放。
    5. 支付控件已加载。

    您可以在 Session 实例中存储一个变量来确定需要加载哪个控件。

    在购物车页面的 PageInit 中检索 Session 变量并加载相应的控件(步骤 1 和 2)。 确保在 PageInit 中执行此操作,以便 ASP.NET 触发事件。

    然后在装运控件的事件处理程序中更新 Session 变量(步骤 3)。

    在购物车页面的 Page_LoadComplete 中,您可以处理发货控件(第 4 步)并加载付款控件(第 5 步)。

    Scott Mitchell 写了一篇关于这种情况的精彩文章:http://scottonwriting.net/sowBlog/posts/3962.aspx

    【讨论】:

      【解决方案2】:

      Webforms 还是 ASP.NET MVC?我假设是网络表单...

      尝试使用 CompositeControl。如果涉及数据绑定,您可以使用 DataBoundCompositeControl。在 CreateCHildren 方法中,您可以动态创建控件并将它们添加到子集合中。下面是我创建过的一个相当复杂的 DataBoundCompositeControl 示例(在内部子控件上进行事件处理):

      Scaffolding Control

      这实际上是一件很难做到的事情。请记住每次都重建所有子控件并存储控件的状态,以便您可以正确地重新创建所有内容。

      您将在回发时重建所有内容两次(第一次 GET 时重建一次)。一次将控件重新创建到以前的状态,第二次处理数据绑定和事件处理后的更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-04-21
        • 1970-01-01
        • 1970-01-01
        • 2010-11-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-31
        相关资源
        最近更新 更多