这是奇怪的ClientID行为,您可以通过以下步骤重现它:
<asp:TextBox runat="server" ID="txt1"></asp:TextBox>
<asp:PlaceHolder runat="server" ID="phTest"></asp:PlaceHolder>
在代码背后,添加:
protected override void OnPreRender(EventArgs e)
{
var ctl = (WebUserControl1)LoadControl("WebUserControl1.ascx");
var id = ctl.Txt1.ClientID;
phTest.Controls.Add(ctl);
id += " - " + ctl.Txt1.ClientID;
ctl.Txt1.Text = id;
base.OnPreRender(e);
}
Broswer页面,您会看到txt1 - txt1
clientIDMode="AutoID"
,则结果为txt1 - ctl00_MainContent_ctl00_txt1
通常,如果clientID添加到另一个容器,则应该添加前缀,但是为什么clientID没有更改?
我只是想知道这是设计还是只是一个bug。感谢。