gpt4 book ai didi

c# - 离开页面时调用 Page_Load

转载 作者:太空狗 更新时间:2023-10-30 00:49:24 28 4
gpt4 key购买 nike

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

当我单击 LinkBut​​ton 转到 WebForm1 时,将调用 WebForm1 的 Page_Load 事件处理程序并且 Page.IsPostBack == false。到目前为止一切顺利。

然后当我点击转到 WebForm2 时,会发生这种情况:

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.

为什么在我转到 WebForm2 时调用 WebForm1 的 Page_Load?我正在加载 WebForm2 而不是 WebForm1。

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

<form id="form1" runat="server">
<div>
<p>This is MySite.Master.</p>
<p>
<asp:LinkButton ID="goto1" runat="server" OnClick="goto1_Click">Go To WebForm1</asp:LinkButton>
</p>
<p>
<asp:LinkButton ID="goto2" runat="server" OnClick="goto2_Click">Go To WebForm2</asp:LinkButton>
</p>

<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>


protected void goto1_Click(object sender, EventArgs e) {
Response.Redirect("WebForm1.aspx");
}

protected void goto2_Click(object sender, EventArgs e) {
Response.Redirect("WebForm2.aspx");
}



public partial class WebForm1 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {

if (Page.IsPostBack) {

}
}
}



public partial class WebForm2 : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {

if (Page.IsPostBack) {

}
}
}

最佳答案

您看到的是单击 goto1goto2 导致页面执行一个Postback,它遵循页面生命周期。在这种情况下,它涉及母版页和内容页。

几个对此有用的链接是

ASP.NET Page Life Cycle Overview

MasterPage and Content Page life cycle

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

  1. Content page PreInit event.
  2. Master page controls Init event.
  3. Content controls Init event.
  4. Master page Init event.
  5. Content page Init event.
  6. Content page Load event.
  7. Master page Load event.
  8. Master page controls Load event.
  9. Content page controls Load event.
  10. Content page PreRender event.
  11. Master page PreRender event.
  12. Master page controls PreRender event.
  13. Content page controls PreRender event.
  14. Master page controls Unload event.
  15. Content page controls Unload event.
  16. Master page Unload event.
  17. Content page Unload event.

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

Content page Load event

这就是为什么您的 Page_Load 事件会为 Click 事件触发,从而导致 PostBack 并为 执行整个生命周期WebForm1 之前

Response.Redirect("WebForm2.aspx");

执行。

关于c# - 离开页面时调用 Page_Load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38402782/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com