离开页面时调用Page_Load
本文关键字:Page Load 调用 离开 | 更新日期: 2023-09-27 17:57:05
我有一个母版页和两个网页,WebForm1和WebForm2。在母版页上有两个链接按钮,用于转到 WebForm1 或 WebForm2。
当我单击 LinkButton 转到 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) {
}
}
}
您
看到的是,单击goto1
或goto2
会导致页面执行遵循页面生命周期的回发。在这种情况下,它涉及母版页和内容页。
对此有用的几个链接是
ASP.NET 页面生命周期概述
母版页和内容页生命周期
特别是涉及母版页,这些是事件的顺序
- 内容页预初始化事件。
- 母版页控制初始化事件。
- 内容控制初始化事件。
- 母版页初始化事件。
- 内容页初始化事件。
- 内容页加载事件。
- 母版页加载事件。
- 母版页控制加载事件。
- 内容页控制加载事件。
- 内容页预呈现事件。
- 母版页预呈现事件。
- 母版页控制预呈现事件。
- 内容页控制预呈现事件。
- 母版页控制卸载事件。
- 内容页控制卸载事件。
- 母版页卸载事件。
- 内容页卸载事件。
这些发生在回发上,您将看到一个
内容页加载事件
这就是为什么您的 Page_Load
事件针对导致回发的 Click
事件触发,并且之前为 WebForm1 执行整个生命周期
Response.Redirect("WebForm2.aspx");
执行。
补充柯克的答案...
当您只想链接到另一个页面时,根本不要使用LinkButton
。 LinkButton
只是一个提交按钮,它被设计成看起来像一个链接 - 它都是通过 ASP.NET 自动生成的JavaScript神奇地连接起来的。
如果您希望链接简单地将您发送到另一个页面,只需在常规HTML中进行操作:
<a href="WebForm2.aspx">Go To WebForm2</a>