2016-03-04 32 views
1

我只是一個初學者,所以我的問題可能聽起來有點愚蠢或基本。
我在asp.net學習編程,因此我看到很多由事件激活的函數。然而,我沒有在代碼中找到任何東西,也沒有在定義哪個事件激活函數的類型簽名中找到任何東西。
因此,在像public void Page_Load (object sender, EventArgs e)這樣的函數中,哪些代碼行決定哪些事件將使函數啓動?它與函數的名字有任何關係嗎?
感謝:)什麼決定事件

回答

2

在ASP.Net 1.1中,我們曾經有過以下的系統隱藏文件每個代碼生成的代碼。

public class Default : System.Web.UI.Page 
{ 
    // ----- System generated code 
    protected System.Web.UI.WebControls.TextBox Name; 
    protected System.Web.UI.WebControls.TextBox Email; 

    public Default() 
    { 
     Page.Init += new System.EventHandler(Page_Init); 
    } 
    // ----- System generated code 

    private void Page_Init(object sender, System.EventArgs e) 
    { 

    } 
} 

它基本上向頁面事件註冊方法。他們不過是將代碼隱藏在文件後面而已。

從ASP.Net 2開始,他們將系統生成的代碼移動到設計器文件中,代碼隱藏在文件後面變得乾淨和容易閱讀。

public class Default : System.Web.UI.Page 
{   
    protected void Page_Load(object sender, System.EventArgs e) 
    {  
    } 
    -- OR -- 
    protected override void OnLoad(EventArgs e) 
    { 
     base.OnLoad(e); 
    } 
} 

哪裏是確定哪些事件將會使 功能開始行代碼?

ASP.Net使用轉換配置方法來註冊事件。這意味着,您可以用以下事件名稱命名受保護的方法,頁面將知道如何附加這些事件。例如,Page_Init的Page_LoadPage_PreRender

此外,您可以覆蓋,如果你想這些事件明確。

https://msdn.microsoft.com/en-us/library/ms178472.aspx

enter image description here

3

像Page_Load這樣的函數由ASP.NET按特定順序調用。您無法配置哪一個會先啓動。這個想法是,你可以用你需要的特定順序覆蓋你需要的代碼。

這裏是MSDN Page Lifecycle信息這談論哪個事件可以被覆蓋和什麼樣的順序,他們進去。