Bezdepbonusu7Программирование: статьи и ответы

Вопрос

UserControl, наследующий от другого UserControl

Автор вопроса: Jon TackaburyОтветов: 2

У меня есть UserControl, который предоставляет некоторые функции (загружает и отображает информацию о клиенте), и я хочу расширить этот UserControl. Для некоторых форм требуется старый добрый UserControl, в то время как для других форм потребуются дополнительные поля. Как я могу наследовать от существующего UserControl, поддерживать существующие поля, но также добавлять новые поля?

Мне нравится, как работают мастер-страницы, когда вы определяете заполнители, а затем страницы с контентом просто заполняют эти заполнители дополнительным контентом. Возможно ли это с помощью UserControls? Спасибо!

user-controls

Ответы

Ответ 1 · рейтинг 1 · Zyphrax

Возможно, вы могли бы определить несколько ASP:PlaceHolder (думайте об этом как о "зонах") в вашем UserControl и сделать их доступными через общедоступные (или защищенные, если вы хотите, чтобы унаследованный класс мог их изменять) свойства. Таким образом, вы можете добавлять к ним подэлементы управления, когда вам это нужно.

protected PlaceHolder TopZone {
   get { return plhTop; }
}


protected PlaceHolder BottomZone {
   get { return plhBottom; }
}

Из одного из унаследованных UserControls:

Label lblTest = new Label { Text = "Hello World!" };
TopZone.Controls.Add(lblTest);

Это очень простой пример, надеюсь, он вам пригодится.

Ответ 2 · рейтинг 1 · Jon Tackabury

Я закончил использовать вложенные мастер-страницы в качестве своих пользовательских элементов управления (поскольку они в любом случае наследуются от пользовательского элемента управления). Затем я просто вызываю this.LoadControl("~/mp.master") и вуаля, у меня есть вложенные пользовательские элементы управления с полной поддержкой во время разработки. :)

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы