Page_Init和Page_Load

时间:2011-07-19 07:11:17

标签: asp.net webforms

页面包含自定义地址控件和checkBox。为什么第二个代码示例正常工作,但首先没有?

//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 个答案:

答案 0 :(得分:11)

因为控件的视图状态是在init和load事件之间加载的。这意味着init事件还不知道客户端的状态。

MSDN lifecycle overview

答案 1 :(得分:2)

因为所有控件都是在OnInit()方法中创建的,所以在Page_Init和Page_Load之间调用。在Page_Init中,所有控件都为null。 Read more