【问题标题】:MasterPage button fires after content page postbackMasterPage 按钮在内容页面回发后触发
【发布时间】:2014-01-05 08:22:58
【问题描述】:

不确定这是否是规定的事件顺序,但我的母版页上有一个注销按钮,其事件在内容页面的 page_load 触发后才会触发。

在某些页面上,page_load 中有一些耗时的代码,这使得注销过程耗时过长。

catch-22 是在内容的 Page_Load 中,我无法检查我可能在 Master 的 logout_click 事件中设置的任何属性,因为它尚未触发。

如何使 MasterPage 的注销按钮首先触发并直接转到我在 click 事件中的重定向? 非常感谢, 吉莫。

【问题讨论】:

  • 其实就是一个简单的页面生命周期过程。 Page_Load 总是在主页面加载之前被调用,因此行为与结果相同。
  • 这是默认行为。
  • Kundan,谢谢,我想这可以回答。如何给 + 或将您的评论标记为答案?
  • @jimo3,您可以投票和/或接受以下任何答案。请通过this游览了解更多关于SO的信息。

标签: asp.net master-pages


【解决方案1】:

您面临的是由于页面生命周期而导致的默认行为。

但您可以尝试以下步骤来解决您的问题

  1. 您可以使用HyperLink,而不是在Click 事件的母版页上拥有Button/LinkButton 和编写LogOut 的代码。

  2. 将其NavigationURL 设置为指向仅处理LogOut 代码的注销页面。

  3. 在该页面的Page_Load事件中写入LogOut代码。

【讨论】:

    【解决方案2】:

    大多数人在他们的 page_load 中添加如下内容

    if (!Page.IsPostBack()) {
      // do stuff to initialize everything
    }
    

    这样,当回发发生时,您不必重新加载一堆东西。

    【讨论】:

    • 是的,我在 page_load 中有那个块,但是在回发中做了一些事情。它与 DevExpress 控件有关(我没有构建此页面)。它为 Devexpress 网格设置数据源。如果我删除它,那么网格的过滤部分将停止工作。我认为网格保存在视图状态中,但我对 DX 控件不是很熟悉。
    • @jimo3:在这种情况下,按照 Devraj 所说的去做,然后将其转换为一个链接,该链接将指向实际注销他们的页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多