生成客户端ID的页面生命周期是什么?

时间:2008-11-18 22:34:12

标签: c# .net asp.net page-lifecycle

我正在以编程方式将Webcontrols添加到用户控件中我还添加了一个将controlID作为参数传递的javascript事件,但是clientID是我指定的那个,它不包含asp.net生成的那个

   var txt = new TextBox();
   txt.ID = "MyID"+Number;

   chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");

我可以通过添加父控件ID

来解决这个问题
   chkBox.Attributes.Add("onClick", "EnableTxtBox('" + this.ClientID+"_"+txt.ClientID + "');");

在哪个页面生命周期中生成客户端ID?

2 个答案:

答案 0 :(得分:7)

在添加属性之前,需要将控件添加到控件层次结构中。

   var txt = new TextBox();
   txt.ID = "MyID"+Number;
   Controls.Add ( txt );
   chkBox.Attributes.Add("onClick", "EnableTxtBox('" +txt.ClientID + "');");

ControlCollection不是普通的集合;它会在添加控件时通知所有者控件,并且控件可以采取适当的操作。

答案 1 :(得分:2)

您应该能够在OnPreRender()期间添加该属性。 INamingContainer有时候很痛苦......