(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Подключение проекта 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

На этом все. Теперь можно сбилдить проекты и посмотреть что получилось.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 08.11.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
VMware Workstation 14 Player for Linux and Windows, ESD
Dr.Web Security Space, продление лицензии на 1 год, 1 ПК
Антивирус ESET NOD32 SMALL Business Pack renewal for 10 user. Электронный ключ
AutoCAD LT 2019 Commercial New Single-user ELD Annual Subscription PROMO
Oracle Data Access Components (ODAC) Standard Subscription - single license
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Delphi - проблемы и решения
ЕRP-Форум. Творческие дискуссии о системах автоматизации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
Обсуждения в форумах
Пишу программы для Windows (в том числе базы данных) (1)
Написание компьютерных программ на заказ. Разработка корпоративных информационных...
 
Ищу программиста для написания программы (66)
Ищу программиста ,владеющего Вижуал Бэйсик и программированием в Экселе, для написания...
 
Пишу программы на заказ для студентов (270)
Пишу для студентов на с, с++, паскаль в средах ms visual studio, qt, builder, borland c, delphi....
 
Как выводить деньги в лучших казино? (3)
Порой игрок казино из рейтинга 2021 https://casino2021.net/ все сделал точно, заявка на вывод...
 
Не могу выбрать технику (3)
Я хочу себе новый компьютер, но выбрать его это задача сродни невозможной. Дайте советы..
 
 
 



    
rambler's top100 Rambler's Top100