Как я могу получить динамический доступ к атрибутам управления пользователем?

StackOverflow https://stackoverflow.com/questions/2469565

Вопрос

Я пытаюсь создать «меню пользовательского управления», в котором ссылки на пользовательские элементы управления страницы размещаются в верхней части страницы.Это позволит мне разместить на странице несколько пользовательских элементов управления и позволить пользователю перейти к этому разделу страницы, не прокручивая так много.Для этого я поместил каждый пользовательский элемент управления в папку (usercontrols) и присвоил каждому элементу управления свойство «Описание» (<%@ Control Language="C#" Description = "Vehicles" .... %>).

Мой вопрос: как я могу получить динамический доступ к этому описанию?Я хочу использовать это описание в качестве ссылки в своем меню.На данный момент на моей странице есть foreach, который ищет в ControlCollection элемент управления типа ASP.usercontrols.Если это так, я бы предположил, что могу получить доступ к его атрибутам и получить это свойство описания.Как я могу это сделать?(Я также открыт для лучшего способа создания моего «меню пользовательского управления», но, возможно, это другой вопрос.) Должен ли я использовать ((System.Web.UI.UserControl)mydynamiccontrol).Attributes.Keys?

Это было полезно?

Решение

вы можете перебирать коллекцию и выполнять либо переключатель, либо несколько операторов 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);
}

Надеюсь это поможет

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top