Можно ли поделиться главной страницей между MVC и веб-формами? - PullRequest
32 голосов
/ 08 мая 2009

Я добавляю MVC в проект, который имеет МНОГО устаревших веб-страниц. Это отлично работает. Тем не менее, в настоящее время у меня есть отдельная главная страница для MVC и для веб-форм. Две главные страницы дают практически идентичный вывод. Я бы очень хотел убить одну веб-форму и просто использовать главную страницу MVC со всеми моими страницами и оставаться сухим.

То, что я НЕ СУХОЙ, уже пару раз укусило меня, когда я забыл поменять оба.

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

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

Ответы [ 3 ]

27 голосов
/ 08 мая 2009

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

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

Объявление на моей главной странице MVC, указывающее на главную страницу веб-форм:

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

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

8 голосов
/ 12 мая 2010

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

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

0 голосов
/ 08 мая 2009

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

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

Мне кажется, это как-то связано?

...