0

我试图了解“名称”属性如何适用于通过 ASP.NET 呈现的标记中的元素

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

ctl00和是什么 cctl1341

如果我创建 a WebControl,给它一个任意 id,然后将 aButton放在它的Controls集合中,该name属性似乎不反映容器的 id?

4

4 回答 4

2

您发现的关键是并非所有控件都会触发此行为。关键是INamingContainer接口。如您所见,只有命名容器将有助于控件的名称,其他控件不会。

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

于 2012-07-18T13:40:30.213 回答
1

您可能对此感兴趣,它概述了生成的 id/名称:http ://www.mostlylucid.net/archive/2008/11/03/way-too-much-information-on-control-ids-和-asp.net-4.0.aspx

于 2012-07-18T13:45:38.553 回答
1

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

于 2012-07-18T13:42:42.520 回答
0

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

关于 ASP.NET 4 中的客户端 ID 模式

于 2012-07-18T13:41:12.520 回答