ClientID、UniqueID 可能不是最终结果

作者:vkvi 来源:ITPOW(原创) 日期:2013-5-30

ASP.NET 控件的 ID 不一定代表最终输出到客户端时 HTML 元素的 id,一般我们用 ClientID 指示 HTML 元素的 ID。

但是请记住 ClientID 受环境的影响,它不表示最终 HTML 元素的 id,而表示根据当前环境下计算出来的 HTML 元素的 id。

比如

两次输出的 c.ClientID 分别为 cftea、YunTong,而 HTML 元素的 id 是参照后面一个来的。

上面的例子比较简单,实际上我们如果又在母版中、又在动态加载控件,情况要复杂得多。我就遇到过一个怪现象,到目前我都不敢相信,鉴于代码太复杂就不贴出来了,只是大家再遇到这样的怪现象的话,可以参考:

就是,我先设置了用户控件的 ID,在用户控件代码中,如果我读取了其中某一控件的 ClientID,哪怕只是多一句 string s = _label.ClientID,那么控件输出为 HTML 元素时,其 id 就没有层级关系,也就是说没有前面的母版的 id、GridView 的 id 作为前缀。

相关文章