Добавление MVC на веб-сайт ASP.NET

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

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

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

Ответ 1

Я успешно добавил проект 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 за сообщение
  • Имейте в виду, что вы можете добавлять элементы управления сервером в свое представление, если они не используют обратные передачи (у меня было много элементов управления сервером из моего проекта webforms, который я должен был использовать)

Ответ 2

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

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

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

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

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

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

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

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

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

2. Добавьте в приложение два каталога: контроллеры и представления.

3. Обновите файл Web.config для загрузки трех сборок во время выполнения, а также регистрации модуля URL-адресов UrlRoutingModule.

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

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

Смешивание веб-форм ASP.NET и ASP.NET MVC

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

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

Ответ 3

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

Ответ 4

Я видел эту работу в прошлом, если вы поместили файл 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

Ответ 5

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

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

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

Ответ 6

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

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

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

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

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

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