Control.ClientID 属性

定义

获取由 ASP.NET 生成的 HTML 标记的控件 ID。

public:
 virtual property System::String ^ ClientID { System::String ^ get(); };
[System.ComponentModel.Browsable(false)]
public virtual string ClientID { get; }
[<System.ComponentModel.Browsable(false)>]
member this.ClientID : string
Public Overridable ReadOnly Property ClientID As String

属性值

由 ASP.NET 生成的 HTML 标记的控件 ID。

属性

示例

以下示例演示母版页的内容页内的 Web 用户控件。 用户控件包含 控件 DropDownListLabel 控件。 控件中显示的 Label 文本由用户从 DropDownList 控件中选择的值决定。 文本值是通过客户端脚本设置的,这样网页就不必为了设置此值而发回服务器。 若要获取对客户端脚本中为控件呈现的 Label HTML 元素的引用,必须知道控件的 ClientID 属性的值。 但是,由于用户控件可以放在网页中的任意位置,因此无法提前知道哪个命名容器将包含这些控件。 ClientID为了确保值与 值相同ID,代码将ClientIDMode值设置为 Static

以下示例演示用户控件。

<%@ Control AutoEventWireup="true" %>

<script type="text/javascript">
  var seasonalSports = new Array("None selected",
                                 "Tennis",
                                 "Volleyball",
                                 "Baseball",
                                 "Skiing");

  function DisplaySport(x) {
      document.getElementById("SelectedSport").innerHTML
      = seasonalSports[x];
  }    
</script>

<asp:DropDownList ID="DropDownList1" runat="server" 
                  onchange="DisplaySport(this.selectedIndex);">
  <asp:ListItem Value="Select a season"></asp:ListItem>
  <asp:ListItem Value="Spring"></asp:ListItem>
  <asp:ListItem Value="Summer"></asp:ListItem>
  <asp:ListItem Value="Autumn"></asp:ListItem>
  <asp:ListItem Value="Winter"></asp:ListItem>
</asp:DropDownList>
<br />
<asp:Label ID="SelectedSport" runat="server" ClientIDMode="Static">
</asp:Label>

以下示例显示包含用户控件的内容页。

<%@ Page Title="" MasterPageFile="~/Seasons.master" AutoEventWireup="true" %>

<%@ Register Src="Seasons.ascx" TagName="Seasons" TagPrefix="uc1" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
  <uc1:Seasons ID="Seasons1" runat="server" />
</asp:Content>

以下示例显示包含内容页的母版页。

<%@ Master AutoEventWireup="true" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <asp:ContentPlaceHolder id="head" runat="server">
    </asp:ContentPlaceHolder>
</head>
<body>
    <form id="form1" runat="server">
    <div>
        <asp:ContentPlaceHolder id="ContentPlaceHolder1" runat="server">
        
        </asp:ContentPlaceHolder>
    </div>
    </form>
</body>
</html>

注解

当 Web 服务器控件呈现为 HTML 元素时, id HTML 元素的 属性设置为 属性的值 ClientID 。 值 ClientID 通常用于使用 document.getElementById 方法访问客户端脚本中的 HTML 元素。 ID 还经常在 CSS 规则中用于指定要设置样式的元素。 例如,以下 CSS 样式规则选择属性值为 ProductIDLabelid 的所有span元素,并将其 background-color 属性设置为 white

span#ProductIDLabel { background-color: white; }

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如果该属性为空,则会在末尾添加一个序列号,而不是数据字段值。 各部分之间用下划线字符 (_) 分隔。
Inherit 控件继承其 NamingContainer 控件的 ClientIDMode 设置。

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

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

适用于

另请参阅