在asp.net中使用前缀'ct100'更改控件ID

时间:2013-09-17 09:52:07

标签: asp.net

检查我的网页控件ID时是 - ContentPlaceHolder1_lnkDistributors

但是,在实时服务器中托管我的网站后,Prefix正在添加到上面的ID。

喜欢: ctl00_ContentPlaceHolder1_lnkDistributors

<asp:LinkButton ID="lnkDistributors" runat="server" Text="Distributors">
</asp:LinkButton>

请帮帮我。 感谢Adv。

3 个答案:

答案 0 :(得分:10)

静态ClientIDMode 旨在控制HTML中的ID;但你必须小心使用它:它不能保证页面中控件ID的唯一性。

<asp:LinkButton ID="lnkDistributors" ClientIDMode="Static"  
 runat="server" Text="Distributors">  </asp:LinkButton>

如果您的控件的ClientIDMode设置为AutoID,则控件的ID将具有前缀以使其唯一。 (例如,ID为“sam”的控件将变为“ct100_sam”)。 如果您的控件的ClientIDMode设置为Static,则不会更改ID并保持开发人员将其设置为。


MSDN

ASP.NET为如何生成ClientID属性值提供了多种算法。您可以通过设置其ClientIDMode属性来选择要用于控件的算法。算法由以下列表中列出的ClientIDMode枚举值标识。

  

自动识别

     

ClientID值是通过将每个父命名容器的ID值与ID的值相连接而生成的   控制。在数据绑定场景中,其中有多个实例   控制被渲染,在前面插入一个递增值   控件的ID值。每个段由下划线分隔   字符(_)。此算法之前在ASP.NET的版本中使用   比ASP.NET 4。

     

静态

     

ClientID值设置为ID属性的值。如果控件是命名容器,则控件用作顶部   命名容器的层次结构,用于它的任何控件   包含。

     

可预测的

     

此算法用于数据绑定控件中的控件。 ClientID值是通过连接生成的   父ID命名容器的ClientID值,ID值为   控制。如果控件是生成的数据绑定控件   多行,指定的数据字段的值   最后添加ClientIDRowSuffix属性。对于GridView   控制,可以指定多个数据字段。如果   ClientIDRowSuffix属性为空,添加了序号   结束而不是数据字段值。这个数字从零开始   每行增加1。每个部分由一个分隔   下划线字符(_)。

     

继承

     

该控件继承其NamingContainer控件的ClientIDMode设置。页面的ClientIDMode的默认值   是可预测的。控件的ClientIDMode的默认值是   继承。因为控件的默认值是Inherit,所以是默认值   生成模式是可预测的。 (但是,如果您使用Visual Studio   从早期版本Visual将Web项目转换为ASP.NET 4   Studio会自动将站点默认设置为Web.config中的AutoID   文件)。

答案 1 :(得分:1)

我已将ClientIDMode="Static"添加到母版页。

<%@ Master  ClientIDMode="Static"....

此ID将来自: lnkDistributors ,与ContentPlaceHolder1_lnkDistributors或ctl00_ContentPlaceHolder1_lnkDistributors不同。

现在工作正常。

答案 2 :(得分:1)

您可以在页面或应用程序级别禁用ASP.NET应用程序中的Id自动递增。对于页面级别,在ClientIDMode="Static"指令中添加@master。对于应用程序级别,将ClientIDMode="Static"添加到web.config