2010-03-18 70 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