2011-07-19 70 views
9

頁面containts自定義地址控件和checkBox。爲什麼代碼的第二個例子可以正常工作,但首先不會?Page_Init和Page_Load

//1 
protected void Page_Init(object sender, EventArgs e) 
{ 
    //doesn't work properly 
    ucLegalAddress.Visible = !chkLegalAddress.Checked; 
} 


//2 
protected void Page_Load(object sender, EventArgs e) 
    { 
    //works properly 
    ucLegalAddress.Visible = !chkLegalAddress.Checked; 
    } 
+2

PLZ克http://codeasp.net/articles/aspnet-page-lifecycle/20/asp.net。如果它能幫助你理解這個概念的話 – Devjosh

回答

11

因爲控件的視圖狀態是在init和load事件之間加載的。這意味着init事件還不知道客戶端的狀態。通過這個

MSDN lifecycle overview

2

因爲所有控件都是在OnInit()方法中創建的,所以在Page_Init和Page_Load之間進行調用。在Page_Init中,所有控件都爲null。 Read more

+6

實際上不是'null'。他們有他們的默認屬性。 – VMAtm