Преобразование веб-формы ASP в пользовательский элемент управления - PullRequest
0 голосов
/ 09 ноября 2009

У меня есть страница веб-формы, которая называется Search.aspx. Мне нужно визуализировать форму в других местах, поэтому я хочу преобразовать веб-форму в пользовательский элемент управления, но мой Search.aspx.cs наследует пользовательский класс страницы, который наследует System.Web.UI.Page. Так как мой C # не поддерживает множественное наследование, я не могу унаследовать как свой пользовательский класс Page, так и класс System.Web.UI.UserControl в своем классе пользовательского контроля поиска classs (Search.ascx.cs).

Мне было интересно, есть ли способ обойти это без необходимости создавать второй пользовательский класс страницы для UserControl.

Заранее спасибо.

Ответы [ 2 ]

1 голос
/ 09 ноября 2009

Зависит от остальной архитектуры.

Самый простой способ - изменить наследование на UserControl. Если вам не хватает некоторых методов в вашем пользовательском базовом классе страниц, вы можете продублировать их в своем пользовательском базовом классе UserControl.

Если вы пытаетесь сохранить его СУХИМ, преобразовайте эти пользовательские методы в класс, который предоставляет эти методы любому классу Page или UserControl. Вы будете использовать композицию, а не наследование, что может быть лучшим путем, если ваше дерево наследования углубится.

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

1 голос
/ 09 ноября 2009

Что нужно форме поиска от унаследованного пользовательского класса Page? Вы можете создать форму поиска так, чтобы она представляла собой не что иное, как форму входных данных и общедоступных свойств, которые отображают входные значения. Трудно сказать, каков лучший ответ без дополнительной информации о том, какое значение предоставляет пользовательский класс Page. Как правило, элементам управления не нужно много знать об их родительской странице.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...