2011-03-18 83 views
2

進出口使用這樣的代碼:閱讀在asp.net自定義標籤的道具

<li id="x" runat="server" code="myCode"> ... 

是否有可能通過對現場檢查每個控制迭代,如果它已經得到了代碼的屬性,如果是過程中它的任何方式?

感謝您的幫助。

進出口使用鑄件asp.net 2.0 嘗試返回null讓我不要有過度的屬性

foreach (object control in this.Controls.ToString()) 
    { 
     HtmlGenericControl gc = control as HtmlGenericControl; 
     if(gc != null) 
     { 

      if(gc.Attributes["code"] != null) ... 

下面的代碼犯規進入,如果控制。全部

回答

2

HtmlControl其中HtmlGenericControl派生,有一個屬性Attributes

該屬性的類型爲AttributeCollection幷包含HtmlControl所具有的所有屬性。

您可以像這樣訪問屬性:

// in aspx 
<li runat="server" id="MyLi" code="Test"></li> 

// in code behind 
var myCodeAttribute = MyLi.Attributes["code"]; 

瞭解更多關於該:http://msdn.microsoft.com/en-us/library/system.web.ui.htmlcontrols.htmlcontrol.attributes.aspx

編輯:

爲了迭代,並有條件地確定有專門的什麼控制屬性你可以這樣做:

in aspx

<ul runat="server" id="MyUl"> 
    <li runat="server" code="Test1"></li> 
    <li runat="server" code="Test2"></li> 
    <li runat="server" code="Test3"></li> 
    <li runat="server" code="Test4"></li> 
</ul> 
代碼

背後

foreach (var control in MyUl.Controls) 
{ 
    var htmlGenericControl = control as HtmlGenericControl; 
    if (htmlGenericControl != null && htmlGenericControl.Attributes["code"] != null) 
    { 
     var myCodeAttribute = htmlGenericControl.Attributes["code"];   
    } 
} 

你可能想整理這件事,打破它的方法和沒有什麼,但我留給你。

+0

好吧,但我想找到所有具有此屬性的控件。讓我說我不知道​​他們的ID。 – gruber 2011-03-18 11:27:38

+0

一旦你在HTML標籤上擁有'runat =「server」',它就變成了'HtmlGenericControl',你可以以面向對象的方式工作。如果你想找到所有'Label'控件或者其他什麼,就是一樣的。 – 2011-03-18 11:40:03