我有一个母版页和两个网页,WebForm1 和 WebForm2。在母版页上有两个链接按钮,以便转到 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) {

        }
    }
}

最佳答案

添加到柯克的答案......

当您只想要一个指向另一个页面的简单链接时,根本不要使用 LinkButtonLinkButton 只是一个提交按钮,它的设计看起来像一个链接——它全部通过 ASP.NET 自动构建的 javascript 神奇地连接起来。

如果您希望链接只是将您发送到另一个页面,只需使用常规 HTML 即可:

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

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

10-13 09:29