Control.ClientID 属性
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
获取由 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 用户控件。 用户控件包含 控件 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 元素。 ID 还经常在 CSS 规则中用于指定要设置样式的元素。 例如,以下 CSS 样式规则选择属性值为 ProductIDLabel
id
的所有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 服务器控件标识。