Календарь на Май 2024 года: calendar2008.ru/2024/may/
Навигация
Главная »  Visual Studio 

Подключение проекта ASP.NET MVC к проекту ASP.NET WebForms


Источник: habrahabr
sentyaev
Зачем это может понадобится? Допустим у нас есть большое приложение 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 
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 На этом все. Теперь можно сбилдить проекты и посмотреть что получилось.




 

 IBM Rational Purify.
 IBM Rational Rose Data Modeler.
 Используем IronPython из Transact SQL.
 Microsoft объявила об изменении цен на Visual Studio 2010.
 Новые возможности Visual Studio 2012.


Главная »  Visual Studio 

© 2024 Team.Furia.Ru.
Частичное копирование материалов разрешено.