检查我的网页控件ID时是 - ContentPlaceHolder1_lnkDistributors 。
但是,在实时服务器中托管我的网站后,Prefix正在添加到上面的ID。
喜欢: ctl00_ContentPlaceHolder1_lnkDistributors 。
<asp:LinkButton ID="lnkDistributors" runat="server" Text="Distributors">
</asp:LinkButton>
请帮帮我。 感谢Adv。
答案 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并保持开发人员将其设置为。
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
。