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

属性值

String

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

属性

示例

以下示例显示了母版页的内容页内的 Web 用户控件。 用户控件包含一个 DropDownList 控件和一个 Label 控件。 控件中显示的 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 元素。 CSS 规则中也经常使用 ID 来指定要设置样式的元素。 例如,以下 CSS 样式规则选择所有具有属性值的ProductIDLabel元素并将其属性设置为background-color``whiteid span

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会自动将网站默认设置为AutoIDWeb.config file.)

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

适用于

另请参阅