2012-07-18 64 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,剩下的就是基於控制生活中的控制,其中產生層次結構。任何實現接口的父控件都將爲爲任何子控件生成的名稱作出貢獻。