-1

ページ内で、次のように定義しています。

<%@ Register Src="MyLocationControl.ascx" TagName="MyLocationControl" TagPrefix="uc3" %>

MyLocationControl.ascx 内に、名前、住所、状態などの非表示の値のコレクションを保持するテキスト ボックス フィールドがあります。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="MyLocationControl.ascx.cs" Inherits="MyLocationControl" %>
<asp:TextBox ID="uxMyLocationDescription" runat="server" Rows="4" TextMode="MultiLine" ReadOnly="true" Width="225px"/>
<asp:HiddenField ID="MyLocationIDField" runat="server" Visible="true" ClientIDMode="Static" />

そして私が持っている.csで

public int LocationID
{
    get { return this.MyLocationIDField.Value == String.Empty ? 0 : Convert.ToInt32(this.MyLocationIDField.Value); }
    set { this.MyLocationIDField.Value = value.ToString(); }
}

clientID にアクセスして値を割り当てることができません。

document.getElementById('<%=uc3_MyLocationIDField.ClientID %>').value = "My Value";

ただし、次の方法でテキストボックスにアクセスできます...

document.getElementById('MainContentPlaceHolder_uxReservationControl_uxRentalLocation_uxRentalLocationDescription').value = "Put something here";

私が欠けているものを教えてください。

4

2 に答える 2

1

ClientIDMode="Static" を使用します。

<asp:TextBox ID="txtName" runat="server" ClientIDMode="Static" />

この記事で詳しく説明してい ます http://www.4guysfromrolla.com/articles/031710-1.aspx

于 2014-11-03T23:18:15.647 に答える
1

ASP.NET 4 以降を使用していて、アクセスしたいコントロールが 1 つしかない場合は、John のソリューションが機能します。

そうでない場合でも、機能させることができます。これに関する問題: -

document.getElementById('<%=uc3_MyLocationIDField.ClientID %>').value = "My Value";

生成された ClientID - uc3_MyLocationIDField を使用して、サーバー側のコントロール - MyLocationIDField にアクセスしようとしています。これは機能しません。また、生成された ID がレンダリングされるたびに同じであるとは限りません。

<%= .. %> 構文を使用するポイントは、サーバー側のコードを参照しているため、これは機能するはずですが、-

document.getElementById('<%=MyLocationIDField.ClientID %>').value = "My Value";
于 2014-11-03T23:53:11.840 に答える