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

这是 ASP.Net 用来将您设置的 ID 属性转换为客户端 ID 的命名约定。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 回答
3

由于该runat="server"属性,这成为服务器端控件。这会将您的母版页、控制信息添加到您的输入元素中。

于 2013-08-16T20:52:49.763 回答
1

这是因为您的元素位于母版页内,母版页通过容器命名来唯一标识控件。

MainContent是您的内容占位符的名称。

为避免此名称损坏,您需要使用 ASP.NET 4.0ClientIDMode属性。

阅读Control.ClientIDMode 属性以获取有关该ClientIDMode属性的更多信息。

于 2013-08-16T20:52:36.547 回答