を含む単純な入力要素があり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;
}
問題は、完全に生成された「ct100_ct100_MainContent_etc._newTextBox」ではなく、NewTextBoxId が「newTextBox」に設定されていることです。入力の ID は HTML で適切にレンダリングされますが、NewTextBoxId が適切に設定されていません。さらに奇妙なことに、入力の ID はローカル インスタンスでは "newTextBox" としてレンダリングされますが、ステージング サーバーにデプロイすると、HTML では "ct100_ct100..._newTextBox" としてレンダリングされます。これに関するアイデアはありますか?