Добавить область ASP.NET MVC в существующий проект ASP.NET Web Forms

У меня есть веб-сайт, разработанный в веб-формах ASP.NET с .NET Framework 4.5.1.

У нас есть требование создать копию сайта для мобильных устройств (в этом случае отзывчивость для нас не работает), поэтому я решил сделать эту часть сайта с помощью ASP.NET MVC.

Примечание, прежде чем продолжить: я знаю, что есть ответы на несколько вопросов по этой теме, и в Интернете есть несколько статей о том, как их смешивать. Но ни один из них не работает для меня, потому что я пытаюсь использовать One ASP.NET Framework, чтобы избежать большого объема ручной работы.

Итак, что я сделал:

  1. Добавьте пакет Nuget для MVC в мой проект ASP.NET WebForms.
  2. После добавления я настроил область MVC для размещения моего мобильного сайта в MVC.

Структура проекта выглядит так:

Структура проекта

И вот моя проблема: если я запускаю любую из страниц ASPX, они работают нормально. Когда я захожу в /Mobile/Home/Index, он говорит, что ресурс не найден. Я подозреваю, что это связано с тем, что папка App_Start не существует в моем проекте, а также отсутствует Starup.cs, поэтому веб-сайт ничего не знает о маршрутизации MVC.

Вопрос

  1. Как я могу добавить папку App_Start и Starup.cs со значениями по умолчанию, не страдая от процесса (избегая копирования/вставки или ручных процессов)?

  2. Как я могу заставить эти оба (веб-проекты) жить вместе, как говорят, это можно сделать с помощью One ASP.NET Framework?

Спасибо!


person Felipe Correa    schedule 12.05.2015    source источник


Ответы (2)


Вам нужно будет зарегистрировать области в вашем Global.asax (добавьте его через пункт меню «Добавить элемент», если он не существует):

public class Global : HttpApplication
{

    protected void Application_Start(object sender, EventArgs e)
    {
        AreaRegistration.RegisterAllAreas();

    }

}

Это активирует ссылку на ваш мобильный @ localhost/{ProjectName}/Mobile/Home

person C Bauer    schedule 12.05.2015
comment
Итак, не нужно создавать Starup.cs? Если мне нужен BundleConfig.cs, я тоже должен его создать? - person Felipe Correa; 12.05.2015
comment
Да, вам потребуется создать файл статической конфигурации для каждого функционального аспекта MVC, который вы хотите использовать в подпроекте. - person C Bauer; 12.05.2015
comment
@FelipeCorrea Я только что провел тест с пустым проектом asp, и все, что вам нужно, это регистрация области в Global.asax, которую вы добавляете в основной проект, если он еще не существует. - person C Bauer; 12.05.2015
comment
Работал как шарм! Спасибо! Я предполагаю, что другие файлы требуются только в том случае, если они нужны для указания большего количества маршрутов или пакетов. Потрясающий! :D - person Felipe Correa; 12.05.2015

Если бы я собирался смешивать их в одном проекте, я бы начал с проекта MVC и разместил страницы ASP.Net в своих собственных подпапках.

Но, возможно, вам следует подумать о двух отдельных проектах, по одному на "приложение".

Так что теперь отдельное приложение может быть развернуто в MainApplicationFolder\SomeSubfolder.

Конечно, вы также можете рассмотреть что-то вроде следующего для своих ссылок:

@VirtualPathUtility.ToAbsolute("~/SomeController/SomeAction")
person Greg    schedule 12.05.2015
comment
Я понимаю вашу точку зрения, хотя я думаю, что полезно воспользоваться возможностями фреймворка. Если вы можете использовать их вместе, и это применимо к проблеме, которую вы пытаетесь решить, зачем усложнять разделение стилей, ссылок на javascript и развертываний? Они говорят (Microsoft), что One ASP.NET Framework позволяет вам начать с любой из технологий, а затем интегрировать то, что вы хотите: веб-API, MVC и веб-формы. Я хочу сделать это, используя эти возможности. - person Felipe Correa; 12.05.2015