为什么隐藏的输入元素上的'name'属性会改变我设置的属性?

时间:2013-08-16 20:50:51

标签: html asp.net html-input name-attribute

这是我的标记:

<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"/>

有没有办法让'name'属性不变? (不是我不在乎的ID,如果这改变了)

3 个答案:

答案 0 :(得分:3)

这是ASP.Net用于将您设置的ID属性转换为客户端ID的命名约定。您可以通过设置ClientIDMode属性来修改此行为。默认情况下,它设置为“Predictable”,表示:

  

ClientID值是通过将父命名容器的ClientID值与控件的ID值连接而生成的。

要使ASP.Net完全按照您的指定使用ID,请设置ClientIDMode=Static。您可以设置此globally in web.config

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

或在页面(或个人控制)级别:

<%@ Page ClientIDMode="Static" ... %>

答案 1 :(得分:3)

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

答案 2 :(得分:1)

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

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

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

有关ClientIDMode属性的详细信息,请阅读Control.ClientIDMode Property