1

繰り返しコードを使用する aspx ページがあります。だから私はそれらをマスターファイルに置き、それを他のすべてのファイルで参照しています。マスターページを含めた他のすべてのページで、

<asp:Content ID="Step1Content" ContentPlaceHolderID="MainContent" Runat="Server">

私の問題は、すべてのフィールド ID に ContentPlaceHolderID_fieldName のサフィックスが付いていることです。このため、私の JavaScript は機能しません。

<input id='chkRaces_1' type='checkbox' runat='server' onclick="enableShow50();" /><label for='chkRaces_1'>American Indian or Alaska Native</label><br />

デバッグすると、次のように表示されます。

<input id="MainContent_chkRaces_1" type="checkbox" onclick="enableShow50(<%# Eval(chkRaces_1.ClientID) %>);" name="ctl00$MainContent$chkRaces_1">

id='chkRaces_1' を使用して refrences する私の Javascript は失敗します。すべての入力をタグ n に置き換えようと思ったのですが、エラーが発生しました。"type HtmlInputCheckBox" は "ListItem" と互換性がありません。だから私もしたくないクラスを変更しなければなりません。

aspxの変更を最小限に抑えて同じことを達成するために他にできること.

4

2 に答える 2

5

ClientIDModeを使用できますが、これは.NET4.0以降でのみ使用可能であることに注意してください。

<asp:Label ID="SelectedSport" runat="server" ClientIDMode="Static">
</asp:Label>

またはJavaScriptの場合:

var userLabel = document.getElementById('<%=SelectedSport.ClientID%>');

javascriptでコントロールにアクセスしようとしている場合は、aspxページを変更する必要がないため、.ClientIDを使用するのがおそらく最善の策です。

于 2012-05-08T17:34:23.440 に答える
2

コンテナーの ID をコントロールの ID に追加しないようにするには、コントロールの ClientIDMode="Static" プロパティを設定します。

<input id='chkRaces_1' type='checkbox' ClientIDMode="Static" runat='server' onclick="enableShow50();" /><    
于 2012-05-08T17:33:57.633 に答える