0

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

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

4

1 回答 1

1

您可以遍历集合并执行 switch 或一些 if 语句

我建议您为所有用户控件提供一个接口或抽象基类:

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);
}

希望这可以帮助

于 2010-03-18T12:36:06.130 回答