2011-03-18 29 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