Подтвердить что ты не робот

Можно ли разделить мастер-страницу между MVC и веб-формами?

Я добавляю MVC к проекту, у которого есть много старых веб-страниц. Это прекрасно работает. Однако в настоящее время у меня есть отдельная главная страница для MVC и для веб-форм. Две основные страницы производят практически идентичный вывод. Я действительно хотел бы убить webforms один и просто использовать главную страницу MVC со всеми моими страницами и оставаться СУХОЙ.

Не будучи DRY, я уже несколько раз укусил меня, когда забыл изменить оба.

Я попытался сделать очевидный путь и просто нарисую атрибут MasterPage страницы веб-формы на главной странице MVC. Это вызывает ошибку, говоря, что мастера MVC работают только с представлениями MVC.

Кажется, что это была бы довольно распространенная проблема со смешанными проектами MVC и webform. Мой мастер MVC ничего не делает с ViewData, поэтому я не вижу причин, по которым веб-формы не могли их использовать.

4b9b3361

Ответ 1

Вы можете абсолютно использовать одну и ту же главную страницу. Ваша главная страница MVC должна просто указывать на главную страницу WebForms через ее атрибут MasterPageFile. Это применит стили WebForms MasterPage к вашему MVC MasterPage.

Я использую эту установку в процессе производства.

Объявление на моей главной странице MVC, на главной странице веб-форм:

<%@ Master Language="C#" MasterPageFile="~/MasterPage/Site.Master"
AutoEventWireup="true" Inherits="System.Web.Mvc.ViewMasterPage" %>

Работает как шарм.

Ответ 2

В этом сообщении в блоге вы найдете необходимые шаги для совместного использования основных страниц WebForm и MVC с небольшим дублированием или без дублирования. Он также включает примерный проект, который вы можете скачать, и я нашел его весьма полезным.

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

Ответ 3

В моем приложении webforms моя главная страница наследуется от "HLPUSD.SMART.SMARTMaster", которая является просто пространством имен для нашего приложения, а затем именем класса веб-формы.

В моем проекте MVC главная страница наследуется от "System.Web.Mvc.ViewMasterPage"

Мне кажется, что это имеет к этому отношение?