
Подключение проекта ASP.NET MVC к проекту ASP.NET WebForms
- Из песочницы
- Tutorial
Зачем это может понадобится? Допустим у нас есть большое приложение ASP.NET WebForms и есть проект написанный на ASP.NET MVC и мы хотим их объеденить.
Допустим адрес нашего сайта такой: www.my-awesome-site.com и мы хотим чтобы MVC был доступен по адресу www.my-awesome-site.com/mvc-stuff
Предусловия: у нас есть решение с двумя проектами — ASP.NET Web Application (WebFormsApplication) и ASP.NET MVC проект (MvcApplication).
Что нужно сделать.
1. Установить ASP.NET MVC для WebFormsApplication
2. Добавить ссылку в WebFormsApplication на MvcApplication
3. Добавить публичный метод в MvcApplication аналогичный Application_Start
4. Вызвать этот метод в Application_Start приложения WebFormsApplication
5. С помощью Razor Generator включить Views в сборку MvcApplication
4.…
5. Profit!!!
1. Установим ASP.NET MVC для WebFormsApplication, делается через nuget следующей командой: Get-Project WebFormsApplication | Install-Package AspNetMvc
2. Добавим ссылку в WebFormsApplication на MvcApplication. Тут все просто — Add Reference… дальше вы знаете
3. Добавим публичный метод в MvcApplication аналогичный Application_Start
Код Global.asax MvcApplication
Сдесь есть такой параметр как “prefix”, он нужен для роутинга. Соответственно изменим метод RegisterRoutes класса RouteConfig, чтобы он мог принимать этот параметр.
Код RouteConfig MvcApplication
4. Добавим вызов этого метода в Application_Start приложения WebFormsApplication
Код Application_Start Global.asax WebFormsApplication
5. Установим плагин для Visual Studio
Для этого нужно установить Razor Generator через Extensions and Updates (не путать его с Razor Single File Generator for MVC)
6. С помощью Razor Generator включим View в сборку MvcApplication
Установим Razor Generator для проекта MvcApplication, делается это через nuget следующей командой Get-Project MvcApplication | Install-Package RazorGenerator.Mvc
Теперь для нужных View задать свойства Build Action: None, Custom Tool: RazorGenerator. После чего для View сгенерятся файлы с именем viewName.generated.cs
На этом все. Теперь можно сбилдить проекты и посмотреть что получилось.
Вот несколько ссылок по теме
Razor Generator
Precompile your MVC Razor views using RazorGenerator
ASP.NET MVC — как использовать вместе с WebForms
ASP.NET MVC — как вынести часть приложения в отдельную сборку?
ASP.NET WebForms and ASP.NET MVC in Harmony
Добавляем MVC к проекту Web Forms
Допустим адрес нашего сайта такой: www.my-awesome-site.com и мы хотим чтобы MVC был доступен по адресу www.my-awesome-site.com/mvc-stuff
Предусловия: у нас есть решение с двумя проектами — ASP.NET Web Application (WebFormsApplication) и ASP.NET MVC проект (MvcApplication).
Что нужно сделать.
1. Установить ASP.NET MVC для WebFormsApplication
2. Добавить ссылку в WebFormsApplication на MvcApplication
3. Добавить публичный метод в MvcApplication аналогичный Application_Start
4. Вызвать этот метод в Application_Start приложения WebFormsApplication
5. С помощью Razor Generator включить Views в сборку MvcApplication
4.…
5. Profit!!!
1. Установим ASP.NET MVC для WebFormsApplication, делается через nuget следующей командой: Get-Project WebFormsApplication | Install-Package AspNetMvc
2. Добавим ссылку в WebFormsApplication на MvcApplication. Тут все просто — Add Reference… дальше вы знаете
3. Добавим публичный метод в MvcApplication аналогичный Application_Start
Код Global.asax MvcApplication
public class MvcApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
Start();
}
public static void Start(string prefix = null)
{
AreaRegistration.RegisterAllAreas();
WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
// let's register routs with prefix
RouteConfig.RegisterRoutes(RouteTable.Routes, prefix);
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterAuth();
}
}
Сдесь есть такой параметр как “prefix”, он нужен для роутинга. Соответственно изменим метод RegisterRoutes класса RouteConfig, чтобы он мог принимать этот параметр.
Код RouteConfig MvcApplication
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes, string prefix)
{
if (!string.IsNullOrEmpty(prefix) && !prefix.EndsWith("/"))
{
prefix += "/";
}
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: prefix + "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
4. Добавим вызов этого метода в Application_Start приложения WebFormsApplication
Код Application_Start Global.asax WebFormsApplication
void Application_Start(object sender, EventArgs e)
{
// Code that runs on application startup
BundleConfig.RegisterBundles(BundleTable.Bundles);
AuthConfig.RegisterOpenAuth();
// Here we add MVC app
MvcApplication.MvcApplication.Start("mvc-stuff");
}
5. Установим плагин для Visual Studio
Для этого нужно установить Razor Generator через Extensions and Updates (не путать его с Razor Single File Generator for MVC)
6. С помощью Razor Generator включим View в сборку MvcApplication
Установим Razor Generator для проекта MvcApplication, делается это через nuget следующей командой Get-Project MvcApplication | Install-Package RazorGenerator.Mvc
Теперь для нужных View задать свойства Build Action: None, Custom Tool: RazorGenerator. После чего для View сгенерятся файлы с именем viewName.generated.cs
На этом все. Теперь можно сбилдить проекты и посмотреть что получилось.
Вот несколько ссылок по теме
Razor Generator
Precompile your MVC Razor views using RazorGenerator
ASP.NET MVC — как использовать вместе с WebForms
ASP.NET MVC — как вынести часть приложения в отдельную сборку?
ASP.NET WebForms and ASP.NET MVC in Harmony
Добавляем MVC к проекту Web Forms
Комментарии 3
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.