这是我的标记:
<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,如果这改变了)
答案 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。