У меня есть UserControl, который предоставляет некоторые функции (загружает и отображает информацию о клиенте), и я хочу расширить этот UserControl. Для некоторых форм требуется старый добрый UserControl, в то время как для других форм потребуются дополнительные поля. Как я могу наследовать от существующего UserControl, поддерживать существующие поля, но также добавлять новые поля?
Мне нравится, как работают мастер-страницы, когда вы определяете заполнители, а затем страницы с контентом просто заполняют эти заполнители дополнительным контентом. Возможно ли это с помощью UserControls? Спасибо!
Ответ 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") и вуаля, у меня есть вложенные пользовательские элементы управления с полной поддержкой во время разработки. :)