离开页面时调用Page_Load

时间:2016-07-15 18:20:33

标签: c# asp.net .net master-pages

我有一个母版页和两个网页,WebForm1和WebForm2。在母版页上有两个LinkBut​​tons,以便转到WebForm1或WebForm2。

当我点击LinkBut​​ton转到WebForm1时,会调用WebForm1的Page_Load事件处理程序并调用Page.IsPostBack == false。到目前为止一切都很好。

然后当我点击进入WebForm2时会发生这种情况:

n = nrow(dpcp)
for (i in 1: n) {
    for (j in 1: 1000) {
        marg_effects[i, j] = (m4[j, 1] * dpcp[i, ] $x1) + (m4[j, 2] * dpcp[i, ] $x2)+ (m4[j, 3] * dpcp[i, ] $x3) + (m4[j, 4] * dpcp[i, ] $x4)
    }
}

为什么在我访问WebForm2时调用PageFoad for WebForm1?我正在加载WebForm2而不是WebForm1。

对于所有页面:AutoEventWireup =" true"。

a) The Page_Load event handler for WebForm1 is called again and Page.IsPostBack == true.
b) Then the Page_Load event handler for WebForm2 is called and its Page_Load == false.

Vice versa when going back to WebForm1.

2 个答案:

答案 0 :(得分:4)

您看到的是,点击goto1goto2会导致该页面在页面生命周期后执行 Postback 。在这种情况下,它涉及母版页和内容页面。

对此有用的几个链接是

ASP.NET Page Life Cycle Overview

MasterPage and Content Page life cycle

特别是涉及的母版页,这些是事件的顺序

  
      
  1. 内容页面 PreInit 事件。
  2.   
  3. 母版页控制初始事件。
  4.   
  5. 内容控制初始事件。
  6.   
  7. 母版页初始事件。
  8.   
  9. 内容页初始事件。
  10.   
  11. 内容页加载活动。
  12.   
  13. 母版页加载事件。
  14.   
  15. 母版页控件加载事件。
  16.   
  17. 内容页面控制加载事件。
  18.   
  19. 内容页 PreRender 事件。
  20.   
  21. 母版页 PreRender 事件。
  22.   
  23. 母版页控件 PreRender 事件。
  24.   
  25. 内容页面控制 PreRender 事件。
  26.   
  27. 母版页控件卸载事件。
  28.   
  29. 内容页面控制卸载事件。
  30.   
  31. 母版页卸载事件。
  32.   
  33. 内容页卸载事件。
  34.   

这些发生在 PostBack 上,你会看到

  

内容页加载事件

这就是为Page_Load事件触发导致 PostBack Click事件并为 WebForm1 执行完整生命周期的原因

Response.Redirect("WebForm2.aspx");

执行。

答案 1 :(得分:2)

再加上柯克的回答......

如果您只想要一个指向其他页面的简单链接,请不要使用LinkButtonLinkButton只是一个提交按钮,其设计看起来像一个链接 - 它通过ASP.NET自动构建的javascript神奇地连接起来。

如果您想要链接只是将您发送到另一个页面,只需在常规HTML中执行:

<a href="WebForm2.aspx">Go To WebForm2</a>