Добавление MVC на веб-сайт ASP.NET - PullRequest
11 голосов
/ 25 августа 2011

Я хотел бы добавить поддержку MVC в существующий проект веб-сайта (не проект веб-приложения) и задать несколько вопросов.

  1. Чтобы получить все преимущества MVC в Visual Studio, похоже, мне нужнообновить .csproj файл <ProjectTypeGuids>.В проекте веб-сайта нет файла csproj.
  2. Похоже, мне нужно создать папку Models и Controllers в App_Code.Это правда?Я предпочитаю иметь эти папки под root.
  3. Для Views я должен создавать файлы aspx и aspx.cs?Поддерживаются ли cshtml файлы бритвы в этом виде установки?

Любые другие ответы приветствуются.Спасибо

Ответы [ 6 ]

9 голосов
/ 30 августа 2011

При использовании asp.net MVC2 и выше, команда MVC разделила основные функциональные возможности на три разных сборки, каждая из которых выходит из общей сборки System.Web:

  • System.Web.Routing
  • System.Web.Abstractions
  • System.Web.Mvc

С этим разделением они пошли дальше и заставили сборки работать в средах с средним уровнем доверияи быть развертываемым бином ».

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

Для этого вам нужно всего лишь поместить сборки в локальную папку bin вашего проекта и сделать необходимые ссылки для этих сборок.Как только это будет сделано, у вас есть доступ к asp.net MVC.

Вот некоторые подробные инструкции из книги Wrox Professional ASP.NET MVC 1.0 , которые должны помочь вам начать работу:

Включение MVC в существующуюПриложения веб-форм

Добавление функциональности ASP.NET MVC в существующее приложение веб-форм состоит из трех различных шагов:

1,Добавьте ссылку на три основных библиотеки, которые необходимы ASP.NET MVC: System.Web.Mvc, System.Web.Routing и System.Web.Abstractions.

2.Добавьте в ваше приложение два каталога: Controllers и Views.

3.Обновите Web.config, чтобы загрузить три сборки во время выполнения, а также зарегистрировать UrlRoutingModule HttpModule.

Для справки, вот пара блогов / сайтов, которые имеют несколько более подробных сценариев, которые могут помочьвы ушли:

Запуск ASP.NET Webforms и ASP.NET MVC бок о бок

Смешивание ASP.NET Webforms и ASP.NET MVC

ASP.NET WebForms и ASP.NET MVC в гармонии

Удачи, и надеюсь, что это поможет вам.

8 голосов
/ 06 сентября 2011

Я успешно добавил ASP.NET MVC 3 в проект Webforms, и вот несколько предложений:

  • Добавьте Controllers в качестве отдельного проекта библиотеки классов и добавьте ссылку на этот проект извеб-проект веб-форм
  • Я пытался получить поддержку VS MVC (например, goto controller и т. д.), но добавление GUID {E53F8FEA-EAE0-44A6-8774-FFD645390401} в файл .csproj не помогло.
  • Да, вы можете добавить ссылки, чтобы получить сеанс из вашей библиотеки классов.Вы всегда можете сделать это, если хотите написать модульные тесты.
  • Добавить Views папку в корень
  • Добавить Models в App_Code
  • Если выЕсли вы используете Razor, вам нужно добавить System.Web.Razor и System.Web.WebPages ссылки
  • Если вы используете Razor, обновите Web.config для этой записи
  • Сохранитьпомните, что вы можете добавить серверные элементы управления в свое представление, если они не используют обратные передачи (у меня было много серверных элементов управления из моего проекта веб-форм, которые мне приходилось использовать)
0 голосов
/ 05 ноября 2013

Мне было поручено обновить (но, к сожалению, не переписать) устаревшие веб-формы .Net 3.5, VB.NET (ughh), проект веб-сайта, и я успешно обновился до 4.0 и добавил поддержку MVC3 (с отдельными папками для компиляции кода в поддержка C #, да!), и это работает просто отлично.

Инструкции @DotnetDude работают, но будьте осторожны с парой вещей ...

(1) При добавлении поддержки Razor это делается в файле Views / Web.config, а не в файле web.config в корневом каталоге вашего проекта.

(2) Если вам случится добавить файл Razor (.chtml или .vbhtml) ВНЕ из каталога Views, vs.net обновит ваш корневой web.config следующим значением

<appSettings>
  <add key="webpages:Enabled" value="true" />
</appSettings>

Не хорошо. Этот параметр разрешает прямой просмотр бритвенных страниц, и когда в моем случае установлено значение TRUE, все ломается. Тем не менее, я использую только бритвенные страницы в своей подпапке Views, однако мне показалось приятным делать AJAX-вызовы с моих страниц .aspx на контроллер, определенный в каталоге App_Code, что позволяет мне модернизировать приложение, которое в основном состоит из всех обратных передач, и C # для доступа к уровню записанных данных VB.NET.

0 голосов
/ 30 августа 2011

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

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

Это будет связано с изменением типа вашего проекта.

0 голосов
/ 30 августа 2011

Я видел эту работу в прошлом, если вы поместили файл Global.asax в корень вашего сайта.Вам понадобится способ для вашего проекта распознавать и отличать запросы MVC от стандартных запросов, например:

public static void RegisterRoutes(RouteCollection routes)
{
    routes.MapRoute("Default",
        "{controller}.mvc/{action}/{id}",
        new { controller = "Home", action = "Index", id = "" }
    );
}

Итак, URL MVC в вашем приложении может выглядеть следующим образом: http://www.mywebsite.com/mycontroller.mvc/View/5

0 голосов
/ 25 августа 2011

ASP.NET MVC не поддерживает шаблон веб-сайта, это может быть только веб-приложение. Таким образом, вы не можете добавить функциональность MVC в проект Web Forms.

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