ASP.NET控件属性:ID、ClientID 和 UniqueID 的区别
ID 表示控件的服务器端编程的标识符,我们写服务器端的代码,就要用到这个 ID, 通过这个 ID 可以在服务器端对服务器端控件的属性、方法等进行编程访问。
ClientID 表示由服务器端生成的客户端控件的ID, 经常用于在客户端脚本中访问服务器控件所呈现的 HTML 元素。一般情况下与服务器端的 ID 相同,有时,不能为控件生成唯一的名称,例如,如果 Repeater 空间在它的某个模板中包含一个 Label 控件,则将在客户端生成多个该 Lable 的 HTML 元素, 为防止命名冲突,ASP.NET 为各个服务器控件生成一个唯一的 ClientID ,ClientID 通过将子控件的父控件的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以下划线 _ 连接。
提到ClientID就顺便提一提OnClientClick主要是在客户端执行的按钮的客户端事件
如果我们设置了OnClientClick的事件让其返回为false那么系统将只执行OnClientClick事件而不会触动到服务器端的onclick事件
据个例子:
在使用用户控件的时候我们有时候通常要验证数据的有效性和合法性如果是在普通的页面上我们很好解决这个问题使用javascript就能很轻松的解决但是如果是使用用户控件就会有一个问题就是服务器端的控件的ID是不知道的!!这是我们是有办法的!!
以上的代码则能很好的解决这个问题!!
<%=this.txtCode.ClientID%>绑定的是txtCode.ClientID
再通过OnClientClick事件对其内容进行验证如果数据不合格返回false Button 只是响应到OnClientClick事件而onClick将不执行!!这时候把这个用户控件拖到页面中则能很好的和在本页面一样验证数据的有效性
UniqueID 用于获取服务器控件的唯一的、以分层方式表示的标识符。当将控件放置到重复控件(Repeater、DataList和DataGrid)中时,将可能生成多个服务器端的控件,这就需要区分服务器端的各个控件,以使它们的 ID 属性不冲突。UniqueID 通过将子控件的父控件的 UniqueID 值与控件的 ID 值连接生成,各个部分之间以 IdSeparator 属性指定的字符连接。默认情况下, IdSeparator 属性为冒号字符 (:)。此属性为在 .Net Framework2.0种新增加。
可以简单地认为:ClientID和UniqueID是当控件放置到重复控件(Repeater、DataList和DataGrid)中时,用于区分控件的客户端和服务器的标识符。ID就是控件无重复时在服务器端表示控件的一般编程标识符。