簡體   English   中英

ASP.Net 3.5 ClientID問題

[英]ASP.Net 3.5 ClientID Issue

我有一個帶有runat="server"的簡單輸入元素。 該字段嵌套在幾層用戶控件中,我使用吸氣劑拉出ID,但給出的ID不是完整生成的ID。

//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”。 有什么想法嗎?

如我的評論中所述。 在調用c.ClientID之前,必須將LoadedControl c添加到當前控件的ControlCollection中。 添加到ControlCollection將導致c被初始化。

//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");
    this.Controls.Add(c);
    NewTextBoxId = ((App.Common.Controls.Shared.UserControl2) c).newTextBox.ClientID;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM