#c# #asp.net #asp.net-mvc #asp.net-mvc-4 #webforms
#c# #asp.net #asp.net-mvc #asp.net-mvc-4 #веб-формы
Вопрос:
В настоящее время я работаю над веб-сайтом, который был создан с использованием модели webforms. Однако, в частности, есть одна страница, которую было бы проще разработать с использованием модели MVC. Я знаю, что можно смешивать два типа с помощью некоторой конфигурации. Мой вопрос: возможно ли создать эту страницу с использованием модели MVC, но наследовать ее от веб-формы?
Например, если бы я должен был создать эту страницу на обычной странице веб-форм, я бы просто установил:
public partial class NewPage : HomeBasePage
Поскольку домашняя базовая страница (веб-форма) используется любой другой страницей на сайте, я обеспокоен тем, что это будет проблемой при создании этой новой страницы в MVC и сохранении согласованности в наследовании.
Ответ №1:
Нет.
MVC и WebForms — это две совершенно разные модели, и они работают по-разному. WebForms использует систему «на основе страниц», в то время как MVC использует систему «на основе контроллера». Это означает, что в MVC нет страниц. У нее есть действия.
Это фундаментальное различие, и именно поэтому веб-формы имеют код, а MVC отделяет действия от их представлений.
Более фундаментально, веб-страницы наследуются от класса Page . Действия MVC наследуются от контроллера. Они совершенно разные, и вы никак не можете их смешивать. Кроме того, MVC и WebForms следуют очень разным жизненным циклам страницы и имеют очень разные конвейеры выполнения.
Однако,
Вы не предоставляете достаточно информации о том, что на самом деле делает HomeBasePage. Возможно, есть какой-то способ повторно использовать некоторые из этих функций по-другому, но не зная, что это такое… мы ничего не можем вам сказать.
Комментарии:
1. Я понимаю. Это имеет большой смысл. Домашняя базовая страница создает основу для веб-сайта, заботясь о панели навигации, панели входа пользователя, а также о проверке подлинности пользователя.
2. @user3734945 — Похоже, ваше текущее приложение webforms работает очень неправильно. Вы никогда не должны выполнять аутентификацию на базовой странице, это должно выполняться через фреймворк (или Application_Authenticate / AuthorizeRequest в global.asax). Вам придется работать за вас.