2

ここに私のマークアップがあります:

<input type="hidden" runat="server" name="block" id="FSC_show_sidebar_button" value="0" />
<input type="hidden" runat="server" name="block" id="FSC_hide_sidebar_button" value="1" />

これは、ページがレンダリングされて検査されると、次のようになります。

<input name="ctl00$MainContent$FSC_show_sidebar_button" id="ctl00_MainContent_FSC_show_sidebar_button" type="hidden" value="0"/>
<input name="ctl00$MainContent$FSC_hide_sidebar_button" id="ctl00_MainContent_FSC_hide_sidebar_button" type="hidden" value="1"/>

「名前」属性が変更されないようにする方法はありますか? (これが変わっても構わないIDではありません)

4

3 に答える 3

3

これは、設定した ID プロパティをクライアント ID に変換するために ASP.Net が使用する命名規則です。プロパティを設定することで、この動作を変更できClientIDModeます。デフォルトでは、これは「予測可能」に設定されています。つまり、次のことを意味します。

ClientID 値は、親ネーミング コンテナーの ClientID 値をコントロールの ID 値と連結することによって生成されます。

指定したとおりに ASP.Net に ID を使用させるには、 を設定しClientIDMode=Staticます。これは web.config でグローバルに設定できます。

<system.web>
    <pages clientIdMode="Static" ... />
</system.web>

または、ページ (または個々のコントロール) レベルで:

<%@ Page ClientIDMode="Static" ... %>
于 2013-08-16T20:52:36.613 に答える
1

これは、要素がマスター ページ内にあるためです。マスター ページは、コンテナーによって名前を付けることで、コントロールを一意に識別します。

MainContentコンテンツ プレースホルダーの名前です。

この名前マングリングを回避するには、ASP.NET 4.0ClientIDMode属性を使用する必要があります。

属性の詳細については、Control.ClientIDMode プロパティを参照してください。ClientIDMode

于 2013-08-16T20:52:36.547 に答える