C#asp.net为什么ClientID和UniqueID有区别?

我知道ClientID用于服务器端的javascript和UniqueId,ClientID使用下划线(_),UniqueId在asp.net 2.0中使用美元符号($)。但是我不知道为什么要使用两个不同的id。为什么不可能只使用或使用下划线或使用美元符号:服务器端和客户端。有人可以解释一下吗
最佳答案
(除了我以前的原始答案)

那么,你可能知道UniqueID与name属性一起使用,ClientId与id属性是一样的HTML标签。 UniqueID使用冒号作为分隔符。另一方面,ClientId使用下划线作为分隔符,因为JavaScript变量名中不允许冒号。 ClientID在唯一ID上确实也是唯一的,但是ClientID的目标是客户端处理和服务器端的UniqueID(很明显),后者特别是通过复合控件路由回发数据和事件

但是,我认为一些推理可能是在正常的控制ID中使用下划线作为分隔符是相当常见的行为,因此下划线不能用于UniqueID作为控件分隔符(如果我们理论上认为用一个属性来管理),因为你不能控制之间的区别。另一方面,由于相同的推理,您不能在控制ID中使用冒号,因此页面框架不允许使用冒号,以便确保冒号无法访问ClientID(这是因为JavaScript不喜欢它) 。

由于这些原因,冒号在UniqueID中是非常好的选择,因为FindControl方法可以使用它来导航控制树和定位控件(它可以轻松拆分UniqueID)。

转载注明原文:C#asp.net为什么ClientID和UniqueID有区别? - 代码日志