【问题标题】:User Control in Master Page loads first母版页中的用户控件首先加载
【发布时间】:2012-03-01 09:58:18
【问题描述】:

我在母版页中有一个用户控件,它计算购物篮中的产品数量并写入购物车(2) 之类的页面,显示您有 2 个产品。 当您将产品添加到购物篮时,由于页面生命周期,首先加载用户控件,然后执行页面的 Add 方法。

所以为了看到新添加的产品生效 - 购物车(3) - 我需要刷新页面..

在按下“添加到购物车”按钮而不刷新网站后,最好的解决方案是什么。

我需要使用母版页的 pre_render 事件吗?

【问题讨论】:

  • 您不应该使用加载事件来处理事件。相反,您应该在您的 UserControl 中提供您的 MasterPage 将进一步处理和处理的自定义事件。引发另一个在 Master 中声明的自定义事件,然后您的页面将处理该事件。这是在 Master 中的 UserControl 和 Page 之间进行通信的正确方式。

标签: asp.net user-controls master-pages


【解决方案1】:

查看ASP.Net page life cycle,您会发现在回发处理程序之后调用了 LoadComplete(仅适用于页面)和 PreRender 事件。

将您的购物车计算移到用户控件的 PreRender 事件中就足够了。

【讨论】:

    【解决方案2】:

    只需注意事件执行的实际顺序,并相应地调用您的逻辑:

    http://msdn.microsoft.com/en-us/library/ms178472.aspx

    通常,母版页 UC 应订阅一个事件,该事件在添加项目时由页面触发。

    【讨论】:

      【解决方案3】:

      最好的做法是在用户控件中使用自定义事件。

      如果您不想使用它,您可以使用变通方法。只需创建用户控件的属性以显示计数并在该页面的 Add 方法中更新其值。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-08-01
        • 2014-03-05
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        相关资源
        最近更新 更多