4

检查我的页面控件 ID 时就像 - ContentPlaceHolder1_lnkDistributors

但是,在实时服务器中托管我的网站后,前缀将添加到上述 ID。

喜欢:ctl00_ContentPlaceHolder1_lnkDistributors

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

请帮我。感谢进阶。

4

3 回答 3

10

静态 ClientIDMode旨在ID在 HTML 中进行控制;但你必须小心使用它:它不保证页面中控件 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 4 的 ASP.NET 版本中使用。

静止的

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

可预见的

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

继承

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

于 2013-09-17T10:07:11.823 回答
1

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

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

这里的 ID 会像:只有lnkDistributors,不像 ContentPlaceHolder1_lnkDistributors 或 ctl00_ContentPlaceHolder1_lnkDistributors。

现在它工作正常。

于 2013-09-17T10:06:48.377 回答
1

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

于 2020-06-03T09:44:00.067 回答