Наследование страниц в смешанных приложениях asp.net Forms и MVC - PullRequest
2 голосов
/ 27 мая 2010

Я работаю над веб-приложением. Один из моих коллег написал несколько страниц форм asp.net. Все классы страниц наследуются от BasePageClass, что, конечно, наследуется от класса Page. Я хотел бы добавить некоторые контроллеры MVC, которые, как мне сказали, должны использовать ту же логику, реализованную в BasePageClass. Обычно я хотел бы наследовать функции в BasePageClass в классах контроллера, но это нарушает иерархию наследования.

Каков наилучший способ решения этой проблемы?

1 Ответ

2 голосов
/ 27 мая 2010

Если есть общие функции, я подозреваю, что эти функции должны быть отделены от страницы / контроллера в любом случае. Это лучше ООП / Д. Тогда и ваша базовая страница контроллера, и ваша база System.Web.UI.Page могут иметь свойства, возвращающие классы, которые содержат эту общую функцию .

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

Менее вероятно, что вы хотите, но все же есть возможность:

  • Вы также можете поместить свою общую функциональность в серию перегруженных методов расширения, где первым параметром является (a) System.Web.UI.Page, а с другой перегрузкой (b) System.Web.Mvc.Controller.
  • И ваша базовая страница, и базовый контроллер могут реализовывать общий интерфейс, упаковывая функциональность, хранящуюся в общем месте.
  • Извлеките эту функциональность целиком и сделайте это по мере необходимости в своей логике контроллера и кодовых компонентах.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...