使用英语阅读

通过


Control.ClientIDMode 属性

定义

获取或设置用于生成 ClientID 属性值的算法。

C#
[System.Web.UI.Themeable(false)]
public virtual System.Web.UI.ClientIDMode ClientIDMode { get; set; }

属性值

一个值,指示如何生成 ClientID 属性。 默认值为 Inherit

属性

示例

以下示例演示 Label 包含在 控件中的 ListView 控件。 在 控件上 ListViewClientIDMode 属性设置为 PredictableClientIDRowSuffix 属性设置为 ProductID。 在呈现的 HTML 中,这将创建对应于三 span 个控件的三个 ProductIDLabel 元素。 页面运行时, id 元素的属性 span 将设置为以下值:

  • ListView1_ProductIDLabel_1
  • ListView1_ProductIDLabel_34
  • ListView1_ProductIDLabel_43
ASP.NET (C#)
<asp:XmlDataSource ID="XmlDataSource1" runat="server" 
                   XPath="Products/Product">
  <Data>
    <Products>
      <Product ProductID="1"  ProductName="Chai" />
      <Product ProductID="34" ProductName="Ale" />
      <Product ProductID="43" ProductName="Coffee" />
    </Products>
  </Data>
</asp:XmlDataSource>

<asp:ListView ID="ListView1" 
              ClientIDMode="Predictable" 
              ClientIDRowSuffix="ProductID"  
              DataSourceID="XmlDataSource1" runat="server" >
  <ItemTemplate>
    ProductID: 
    <asp:Label ID="ProductIDLabel" runat="server" 
               Text='<%# Eval("ProductID") %>' />
    <br />
    ProductName:
    <asp:Label ID="ProductNameLabel" runat="server" 
               Text='<%# Eval("ProductName") %>' />
    <br />
    <br />
  </ItemTemplate>

  <LayoutTemplate>
    <div ID="itemPlaceholderContainer" runat="server">
      <span ID="itemPlaceholder" runat="server" />
    </div>
    <div>
    </div>
  </LayoutTemplate>
  
</asp:ListView>

注解

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

说明
AutoID ClientID 值是通过串联每个父命名容器的 ID 值生成的,这些父命名容器都具有控件的 ID 值。 在呈现控件的多个实例的数据绑定方案中,将在控件的 ID 值的前面插入递增的值。 各部分之间用下划线字符 (_) 分隔。 此算法在早于 ASP.NET 4 的 ASP.NET 版本中使用。
Static ClientID 值设置为 ID 属性的值。 如果控件是命名容器,则该控件将用作其所包含的任何控件的命名容器的顶层。
Predictable 对于数据绑定控件中的控件使用此算法。 ClientID 值是通过串联每个父命名容器的 ClientID 值生成的,这些父命名容器都具有控件的ID 值。 如果控件是生成多个行的数据绑定控件,则在末尾添加 ClientIDRowSuffix 属性中指定的数据字段的值。 对于 GridView 控件,可以指定多个数据字段。 ClientIDRowSuffix如果该属性为空,则会在末尾添加一个序列号,而不是数据字段值。 此数字从零开始,每行按 1 递增。 各部分之间用下划线字符 (_) 分隔。
Inherit 控件继承其 NamingContainer 控件的 ClientIDMode 设置。

页面的 ClientIDMode 默认值为 Predictable。 控件的 ClientIDMode 默认值为 Inherit。 由于 控件的默认值为 Inherit,因此默认生成模式为 Predictable。 (但是,如果使用 Visual Studio 将 Web 项目从早期版本转换为 ASP.NET 4,Visual Studio 会自动在 AutoID Web.config file.)

有关详细信息,请参阅 ASP.NET Web 服务器控件标识

适用于

产品 版本
.NET Framework 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

另请参阅