Добавление 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.