快速业务通道

漫话ID(中)——UniqueID和ClientID

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-20

在上一篇漫话ID(上)——Name和ID的种种中,我介绍了关于name和id的一些问题,在这片文章中, 我们把目光放到ID上来,这篇主要关注自定义控件和repeater等控件中碰到的UniqueID和ClientID。同时 ,在文末还是依照老习惯,给出一个便于大家理解的例子,而不仅仅是纸上谈兵。

在ASP.NET 的服务器端控件中有三种关于ID 的属性,即 ID, ClientID 和 UniqueID。ID 表示控件的 服务器端编程的标识符,我们写服务器端的代码,就要用到这个 ID, 通过这个 ID 可以在服务器端对服 务器端控件的属性、方法和时间进行编程访问。ClientID 表示由服务器端生成的客户端控件的ID,  经 常用于在客户端脚本中访问服务器控件所呈现的 HTML 元素。一般情况下与服务器端的 ID 相同,有时, 不能为控件生成唯一的名称,例如,如果 Repeater 空间在它的某个模板中包含一个 Label 控件,则将 在客户端生成多个该 Lable 的 HTML 元素, 为防止命名冲突,ASP.NET 为各个服务器控件生成一个唯一 的 ClientID ,ClientID 通过将子控件的父控件的 UniqueID 值与控件的 ID 值连接生成,各个部分之间 以下划线 _ 连接。UniqueID 用于获取服务器控件的唯一的、以分层方式表示的标识符。当将控件放置到 重复控件(Repeater、DataList和DataGrid)中时,将可能生成多个服务器端的控件,这就需要区分服务 器端的各个控件,以使它们的 ID 属性不冲突。UniqueID 通过将子控件的父控件的 UniqueID 值与控件 的 ID 值连接生成,各个部分之间以 IdSeparator 属性指定的字符连接。默认情况下, IdSeparator 属 性为冒号字符 (:)。

例如,创建以下 ASP.NET 服务器控件:

<asp:textbox id="TextBox1" runat="server" text="Sample Text" />

ClientID 属性被设置为 TextBox1,在基于 HTML 的浏览器中,其结果元素与以下所示类似:

<input name="TextBox1" type="text" value="Sample Text" id="Text1" />

可以使用这些属性在客户端脚本中引用服务器控件。通常,必须在客户端脚本中用完全限定引用来引 用控件;如果控件是页面中 form 元素的子控件,则一般使用document.forms[0].TextBox1.value = "New value"在客户端脚本中引用控件。有些控件将子控件呈现在页面中。这些控件中包括数据列表控件 (如 GridView、DetailsView、FormView、DataList 和 Repeater 控件)、用户控件和 Web 部件控件。

例1:

在页面中加入一个DataGrid控件,然后在该控件中加入Button子控件。

前台代码:

<asp:DataGrid ID="DataGrid1" runat="server" AutoGenerateColumns="false">

后台代码:

protected void Page_Load(object sender, EventArgs e)
    {
        if (!Page.IsPostBack)
        {
            ArrayList list = new ArrayList();
            list.Add(1);
            list.Add(2);
            DataGrid1.DataSource = list;
            DataGrid1.DataBind();
        }
}

实际运行结果(html代码):

<table cellspacing="0" rules="all" border="1" id="Table1" style="border- collapse: collapse;">

可以看到,在这些情况下,子控件可能不具有唯一的 ID,这可能是因为子控件是在某个模板中定义的 ,该模板会为每个数据行(数据列表控件)生成新的控件实例,也可能是因为可以从外部源(用户控件和 Web 部件控件)将父控件添加到页面中对于每个子控件:控件的 UniqueID 被呈现

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号