如何在ASP.NET中计算“name”属性?

时间:2012-07-18 13:35:45

标签: asp.net

我试图理解'name'属性如何适用于通过ASP.NET呈现的标记中的元素

即。 <select id="lblxyz" name="ctl00$c$ctl341$lblxyz">

什么是ctl00cctl1341

如果我创建了WebControl,请为其添加任意ID,然后在Button集合中放置Controlsname属性似乎不会反映容器的ID?

4 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

生成的名称属性通常始终以ctl00开头,其余的基于控件在控件层次结构中的位置生成。实现INamingContainer接口的任何父控件都将为为任何子控件生成的名称做出贡献。

答案 2 :(得分:1)

答案 3 :(得分:0)

您可以使用新的ClientIDMode控制客户端ID的显示方式:

All about Client ID Mode in ASP.NET 4