Как я могу получить динамический доступ к атрибутам управления пользователем?
-
20-09-2019 - |
Вопрос
Я пытаюсь создать «меню пользовательского управления», в котором ссылки на пользовательские элементы управления страницы размещаются в верхней части страницы.Это позволит мне разместить на странице несколько пользовательских элементов управления и позволить пользователю перейти к этому разделу страницы, не прокручивая так много.Для этого я поместил каждый пользовательский элемент управления в папку (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);
}
Надеюсь это поможет