Pergunta

Estou tentando criar um "menu de controle do usuário", onde os links para os userControls de uma página são colocados na parte superior da página. Isso me permitirá colocar vários UserControls em uma página e permitirá ao usuário pular para a seção da página sem rolar tanto. Para fazer isso, coloquei cada UserControl em uma pasta (UserControls) e dei a cada controle uma propriedade de descrição (<%@ Control Language="C#" Description = "Vehicles" .... %>).

Minha pergunta é como posso acessar essa descrição dinamicamente? Quero usar esta descrição como link no meu menu. Até agora, tenho um para cada um na minha página que procure no ControlCollection para um controle que é do tipo Asp.userControls. Se for, eu suponho que poderia acessar seus atributos e pegar a propriedade Descrição. Como posso fazer isso? (Também estou aberto a uma maneira melhor de alcançar meu "menu de controle de usuário", mas talvez seja outra pergunta.) Devo usar ((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys?

Foi útil?

Solução

Você pode iterar sobre a coleção e fazer um switch ou algumas declarações se

Eu sugeriria que você tem uma interface ou uma classe base abstrata para todos os seus controles de usuário:

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

Então você pode dar um pau sobre eles como você:

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

Espero que isto ajude

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top