2010-03-18 68 views
0

我试图创建一个“用户控制菜单”,其中页面的用户控件的链接放置在页面的顶部。这将允许我在页面上放置几个用户控件,并允许用户跳到页面的该部分,而无需滚动那么多。为了做到这一点,我把每个用户控件放在一个文件夹(usercontrols)中,并给每个控件一个Description属性(<%@ Control Language="C#" Description = "Vehicles" .... %>)。如何动态访问用户控件属性?

我的问题是如何动态访问这个描述?我想用这个描述作为我菜单中的链接。到目前为止,我的页面上有一个foreach,它在ControlCollection中查找一个ASP.usercontrols类型的控件。如果是这样,我会假设我可以访问它的属性并获取该描述属性。我怎样才能做到这一点? (我也打开一个更好的方式来实现我的“用户控制菜单”,但也许多数民众赞成在另一个问题。)我应该使用((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys

回答

1

您可以通过访问集合,并做了交换机或几个if语句

我会suggst你有一个接口或所有用户控件的抽象基类:

public abstract class MyBaseClass : UserControl 
{ 
    public abstract string MyDescription {get;} 
} 

public MyUserControlA : MyBaseClass 
{ 
    public string MyDescription {get {return "my description";}} 
} 

public MyUserControlB : MyBaseClass 
{ 
    public string MyDescription {get {return "my other description";}} 
} 

然后你可以在他们环路你做到:

foreach ... 
if (mydynamiccontrol is MyBaseClass) 
{ 
    Response.Write(((MyBaseClass)mydynamiccontrol).MyDescription); 
} 

希望这有助于

+0

我认为你说得很好。我很可能比我应该做得更难。我仍然好奇如何访问用户控件中的Description属性。如果我尝试迭代属性集合,我只是得到一个空集合。 – rahkim 2010-03-18 15:48:57