Posted on 2007-01-14 12:03
桂涛 阅读(4150)
评论(10) 编辑 收藏 网摘 所属分类:
Asp.net 2.0 or above
Feedback
从ASP.NET 1.0开始就这样,你去看看Control.Unique和Control.ClientID这两个属性的MSDN解释,还有INamingContainer这个标记接口的说明,你就明白其中的原理了。
没有经验,但是记下了,以后有错误就能记起来了。
谢谢先
@Cat Chen
同意,确是早已有的变化
我后来也分析过,可能也就是为了避免服务期控件与html元素的冲突
而我通常习惯用Control.ClientID的属性来获得其被编译后发送到浏览器的编号,也可以达到动态构建javascript的目的
要用好ASP.NET,还是要看它生成的HTML是什么样的。
@aspnetx
是一开始就这样设计的了,确保页面上任何两个Control的UniqueID都不相同。同时因为HTML中的id也有唯一性要求,所以ClientID也就从UniqueID转过来。
我非常不喜欢这一点...
特别是映射html标签的时候,js获取不到代码了,我也不喜欢自己的代码自己连id都说不算
呵.我都是先到生成的html页面找到对应的ID,然后再修改脚本里的ID.
@llinzzi
这没办法的啊,首先id要求全页唯一,其次ASP.NET Page要求控件间松耦合,一个控件如何确保自己使用的id不和别人的冲突呢?就只能按照一定的规则来分配id。