为什么ClientID在ASP.Net 3.5中没有改变

时间:2012-10-11 12:25:02

标签: asp.net .net-4.0 .net-3.5 asp.net-4.0 asp.net-3.5

这是奇怪的ClientID行为,您可以通过以下步骤重现它:

  1. 使用.net 3.5
  2. 创建一个Web项目
  3. 添加新的WebUserControl
  4. 在控件<asp:TextBox runat="server" ID="txt1"></asp:TextBox>
  5. 中添加一个文本框
  6. 在默认页面中,添加PlaceHolder,<asp:PlaceHolder runat="server" ID="phTest"></asp:PlaceHolder>
  7. 在代码背后,添加:

    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);
    }
    
  8. Broswer页面,您会看到txt1 - txt1

  9. 如果您将框架更改为.Net4,并使用clientIDMode="AutoID",则结果为txt1 - ctl00_MainContent_ctl00_txt1
  10. 通常,如果clientID添加到另一个容器,则应该添加前缀,但是为什么clientID没有更改?

    我只是想知道这是设计还是只是一个bug。感谢。

0 个答案:

没有答案