2012-07-18 218 views
0

我试图了解'name'属性如何为通过ASP.NET呈现的标记中的元素起作用在ASP.NET中如何计算'name'属性?

I.e. <select id="lblxyz" name="ctl00$c$ctl341$lblxyz">

什么是ctl00,cctl1341

如果我创建一个WebControl,给它一个任意的ID,然后将一个ButtonControls集里面,name属性似乎并没有反映容器的id?

回答

2

您发现的关键是并非所有控件都会触发此行为。关键是INamingContainer接口。只有命名容器将会为您所看到的控件名称做出贡献,其他控件则不会。

上面链接的MSDN页面说得非常好:该接口“标识一个容器控件,它在Page对象的控件层次结构内创建一个新的ID名称空间。”

1

所产生的名字一般属性总是使用ctl00,剩下的就是基于控制生活中的控制,其中产生层次结构。任何实现接口的父控件都将为为任何子控件生成的名称作出贡献。