当前位置: 首页 > news >正文

服务器端控件三种ID:ID,ClientID和UniqueID

在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 服务器控件: ClientID 属性被设置为 TextBox1,在基于 HTML 的浏览器中,其结果元素与以下所示类似: 可以使用这些属性在客户端脚本中引用服务器控件。通常,必须在客户端脚本中用完全限定引用来引用控件;如果控件是页面中 form 元素的子控件,则一般使用document.forms[0].TextBox1.value = "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: 假设有子控件: 那么我们可以在脚本中这样写 var tempt = '<%=textboxInfo.ClientID%>'; var controlname = document.getElementById(tempt).name; var controlid = document.getElementById(tempt).id;   还有一个问题我们需要注意:在使用UniqueID和ClientID的时候要小心点,千万不要“迫不及待”地使用了这些属性,在运行的过程中可能会碰到一些让人头疼的问题.

相关文章:

  • IIS 无权查看网页 HTTP 错误 401.2 - 未授权:服务器配置导致登录失败解决方法
  • access常用函数
  • access IIf函数
  • asp输出双引号
  • asp Jmail发邮件类
  • asp一些支付接口
  • Javascript中最常用的55个经典技巧
  • 让Div浮动层浮在Flash上面下去
  • 一个用JS操作Cookie的类
  • 关于 var YAHOO = window.YAHOO || {}; 的解释
  • partial class
  • ClientBuildManager类的编译功能
  • SQL精华
  • C#的四个基本技巧
  • 40种网站设计常用技巧
  • 2018天猫双11|这就是阿里云!不止有新技术,更有温暖的社会力量
  • es6要点
  • fetch 从初识到应用
  • HashMap ConcurrentHashMap
  • HTTP那些事
  • JAVA SE 6 GC调优笔记
  • Laravel Mix运行时关于es2015报错解决方案
  • macOS 中 shell 创建文件夹及文件并 VS Code 打开
  • Node 版本管理
  • PHP变量
  • win10下安装mysql5.7
  • 阿里云前端周刊 - 第 26 期
  • 简单实现一个textarea自适应高度
  • 前言-如何学习区块链
  • 在Mac OS X上安装 Ruby运行环境
  • const的用法,特别是用在函数前面与后面的区别
  • (16)Reactor的测试——响应式Spring的道法术器
  • (C#)获取字符编码的类
  • (ros//EnvironmentVariables)ros环境变量
  • (编译到47%失败)to be deleted
  • (超简单)构建高可用网络应用:使用Nginx进行负载均衡与健康检查
  • (附源码)springboot助农电商系统 毕业设计 081919
  • (黑马出品_高级篇_01)SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式
  • (六)vue-router+UI组件库
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (十) 初识 Docker file
  • (十)T检验-第一部分
  • (循环依赖问题)学习spring的第九天
  • (译)计算距离、方位和更多经纬度之间的点
  • (正则)提取页面里的img标签
  • .NET LINQ 通常分 Syntax Query 和Syntax Method
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 设计一套高性能的弱事件机制
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET 中小心嵌套等待的 Task,它可能会耗尽你线程池的现有资源,出现类似死锁的情况
  • .Net6支持的操作系统版本(.net8已来,你还在用.netframework4.5吗)
  • .net专家(张羿专栏)
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林
  • [Android]Android开发入门之HelloWorld