ASP.Net控件客户端ID

今天帮人解决了一个问题,大致原因是对方服务器ASP.Net控件产生的客户端ID与我的服务器产生的不同,导致JS执行和Request提交接收数据有误
如我的是DataGrid1:_ctl3:tid,而对方的却是DataGrid1$ctl03$tid,代码是同样的
虽然我强行修改了DLL帮人解决了这个问题,但仍然觉得有必要去深究
根据MSDN的记载:
Control.ClientID 属性(获取由 ASP.NET 生成的服务器控件标识符。)
除了用来分隔 ID 值的是下划线字符而不是 IdSeparator 属性指定的字符以外,为控件生成的 ClientID 值与 UniqueID 值相同。默认情况下,IdSeparator 属性设置为冒号字符 (:)。由于 ClientID 值不包含冒号字符,因此,它可以用于不支持包含冒号的 ID 的 ECMAScript。
Control.UniqueID 属性(获取服务器控件的唯一的、以分层形式限定的标识符。)
分隔符字符。默认为“$”。
对比一下今天遇到的情况,发现同样的代码,由服务器端发往客户端的ID取值,我的是ClientID,而他的却是UniqueID
印象中大学时的课本、机房的实验,得出的ID都是以“$”分隔的,但我现在的实际情况和MSDN的记载却是以“:”分隔的
为什么会有这样的区别?ClientID的取值与服务器的设置、.Net的版本号之间又要什么关系(我的系统和环境一直都是保持最新的)?如果改变IdSeparator的值?自定义控件时如果定义ClientID的生成规则?
这些好像在我借给别人的黑皮书中有说明
先把问题记录下来,等别人还我书后再去寻找这些解答
.Net Framework Changelog这个也应该看一下(忽然想起来的)

添加评论

Loading