私はマスターページと2つのWebページWebForm1とWebForm2を持っています。マスターページには、WebForm1またはWebForm2に行くために2つのLinkButtonがあります。ページを終了するときPage_Loadが呼び出されます
WebForm1に移動するLinkButtonをクリックすると、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と呼ばれるのはなぜ?私はWebForm1ではなくWebForm2をロードしています。
すべてのページ: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) {
}
}
}
asp.netボタンの働き方です。それらはページのポストバックを引き起こします。そのため、page_loadが再びヒットします。クリックハンドラが起動します。 –
@ S.Akbari以下の回答を参照してください –