0
我有一个简单的输入元素runat="server"
。该字段嵌套在几层用户控件中,我用吸气剂拉ID,但给出的ID不是完整的生成ID。ASP.Net 3.5 ClientID Issue
//UserControl2.ascx nested inside of UserControl1.ascx
...
<input type="text" runat="server" id="newTextBox" />
...
//UserControl1.ascx.cs nested inside of Page1.aspx
...
public string NewTextBoxId;
protected void UserControl2PlaceHolder_Load(object sender, EventArgs e)
{
var c = LoadControl("~/Common/Controls/Shared/UserControl2.ascx");
NewTextBoxId = ((App.Common.Controls.Shared.UserControl2) c).newTextBox.ClientID;
}
的问题是,NewTextBoxId被设置为“newTextBox”,而不是完全生成“ct100_ct100_MainContent_etc._newTextBox”。输入的ID在HTML中正确呈现,但NewTextBoxId设置不正确。为了让事情变得更奇怪,输入的ID在本地实例上呈现为“newTextBox”,但是当我部署到我们的登台服务器时,它在HTML中呈现为“ct100_ct100 ..._ newTextBox”。对此有何想法?
从我记得LoadControl不会将'c'添加到UserControl2的ControlCollection实例。你有没有尝试过将它添加到ControlCollection(它将初始化控件)后获取ClientId? –
@KenHenderson先生,你是我的英雄。在将控件添加到PlaceHolder之前,我拉动了ClientID。非常感谢。继续添加下面的答案,我会接受它。 :) – Joe
没问题。动态控件可能有点有趣。 –