admin 管理员组

文章数量: 1086019


2024年4月18日发(作者:margin四个属性值)

.NET中获取服务器端控件的ID进行客户端编程

.NET中获取服务器端控件的ID进行客户端编程

2009-12-10 09:42

在 的服务器端控件中有三种关于 ID 的属性,即 ID,

ClientID 和 UniqueID。

ID 表示控件的服务器端编程的标识符,我们写"服务器端的代码",

就要用到这个 ID, 通过这个 ID 可以在服务器端对服务器端控件的属性、

方法和时间进行编程访问。(可写)

ClientID 表示由服务器端生成的客户端控件的ID,"经常用于在客

户端脚本中访问服务器控件所呈现的 HTML 元素"。一般情况下与服务

器端的 ID 相同,有时,不能为控件生成唯一的名称,例如,如果

Repeater 空间在它的某个模板中包含一个 Label 控件,则将在客户端

生成多个该 Lable 的 HTML 元素, 为防止命名冲突, 为各个

服务器控件生成一个唯一的 ClientID ,ClientID 通过将子控件的父控件

的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以下划线 _ 连

接。(只读)

UniqueID 用于获取服务器控件的唯一的、以分层方式表示的标识

符。当将控件放置到重复控件(Repeater、DataList和DataGrid)中

时,将可能生成多个服务器端的控件,这就需要区分服务器端的各个

控件,以使它们的 ID 属性不冲突。UniqueID 通过将子控件的父控件

的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以

IdSeparator 属性指定的字符连接。默认情况下, IdSeparator 属性

为冒号字符 (:)。此属性为在 .Net Framework2.0种新增加。js与

交互一般情况下使用<%=控件ID%>就OK了,但如

果用到母版页(MasterPage)则要使用UniqueID获得获值。(只读)

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

Text" />

ClientID 属性被设置为 TextBox1,在基于 HTML 的浏览器中,

其结果元素与以下所示类似:

id="Text1" />

可以使用这些属性在客户端脚本中引用服务器控件。通常,必须

在客户端脚本中用完全限定引用来引用控件;如果控件是页面中 form

元素的子控件,则一般使用[0]. =

"New value"在客户端脚本中引用控件。

有些控件将子控件呈现在页面中。这些控件中包括数据列表控件

(如GridView、DetailsView、FormView、DataList 和 Repeater 控

件)、用户控件和 Web 部件控件。可以看到,在这些情况下,子控件

可能不具有唯一的 ID,这可能是因为子控件是在某个模板中定义的,

该模板会为每个数据行(数据列表控件)生成新的控件实例,也可能

是因为可以从外部源(用户控件和 Web 部件控件)将父控件添加到页

面中对于每个子控件:控件的 UniqueID 被呈现为 name。控件的

ClientID 被呈现为 id 属性。

ClientID 和 UniqueID 属性都基于原始的 ID 属性,并用足够的信

息进行了修改,以保证页面中结果的唯一性。ClientID的值可在客户

端脚本中引用。如果在浏览器中显示一个具有命名容器的页面,则可

以查看该页面的源文件,从中找到唯一的 ID,这些 ID 作为命名容器

子控件的 name 属性和 id 属性生成。但是,建议不要依赖于直接引用

在浏览器中看到的 ID。因为用于生成子控件唯一ID 的公式可能会发生

变化,应当获取子控件的 ClientID 属性值,并用该值来引用该子控件。

例如,您可能会在页面中动态创建客户端脚本。如果客户端脚本引用

一个子控件,则应获取该子控件的 ClientID 属性,并将其嵌入到动态

脚本中。

例2:

假设有子控件:

Text box" name="haha">

那么我们可以在脚本中这样写


本文标签: 控件 服务器端 生成 客户端 属性