2016-07-15 56 views
4

我有一個母版頁和兩個網頁,WebForm1和WebForm2。在母版頁上有兩個LinkBut​​tons以便轉到WebForm1或WebForm2。Page_Load在離開頁面時調用

當我點擊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是Page_Load中的WebForm1的叫什麼?我正在加載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) { 

     } 
    } 
} 
+2

這是asp.net方式按鈕的作用。他們導致頁面回發,這就是爲什麼page_load再次被擊中。那麼點擊處理程序會觸發。 –

+0

@ S.Akbari請參閱下面的回答 –

回答

2

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

如果你只是想要一個簡單的鏈接到其他頁面,不使用LinkButton可言。 LinkButton只是一個提交按鈕,它被設計成看起來像一個鏈接 - 所有這些都通過ASP.NET自動構建的JavaScript來神奇地聯繫起來。

如果你想有一個鏈接,簡單地送你到另一個頁面,只是做常規的HTML:

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

我試過

4

你所看到的是,點擊goto1goto2導致網頁做回傳後面的頁面生命週期。在這種情況下,它涉及到主頁面和內容頁面。

是有用的這幾個環節都

ASP.NET Page Life Cycle Overview

MasterPage and Content Page life cycle

特別是與所涉及的母版,這些事件

  1. 內容頁面的順序PreInit事件。
  2. 母版頁控件初始事件。
  3. 內容控件初始化事件。
  4. 母版頁初始事件。
  5. 內容頁面初始事件。
  6. 內容頁面加載事件。
  7. 母版頁加載事件。
  8. 母版頁控件加載事件。
  9. 內容頁面控件加載事件。
  10. 內容頁面PreRender事件。
  11. 母版頁PreRender事件。
  12. 母版頁控件PreRender事件。
  13. 內容頁面控件PreRender事件。
  14. 母版頁控件卸載事件。
  15. 內容頁面控件卸載事件。
  16. 母版頁卸載事件。
  17. 內容頁面卸載事件。

這些發生在一個回發,你會看到一個

內容頁負載事件

這就是爲什麼你Page_Load事件被解僱了Click事件導致回發和完整的生命週期是exe前

Response.Redirect("WebForm2.aspx"); 

執行cuted爲WebForm1中