Как активировать шаблоны MVC в VS2008 из приложения WebForms - PullRequest
1 голос
/ 28 марта 2009

Я в процессе добавления ASP.NET MVC в приложение WebForms. Одна из полезных функций решения ASP.NET MVC, которое вы создаете с нуля, заключается в том, что при щелчке правой кнопкой мыши на обозревателе решений и в меню «Добавить»> «Новый элемент» открывается список шаблонов, включающих шаблоны MVC. Однако в приложении WebForms эти шаблоны не отображаются.

Я подумал, что в файле решения .sln может быть параметр, указывающий на то, что это приложение ASP.NET MVC, но я не смог найти ничего, что могло бы выпасть.

РЕДАКТИРОВАТЬ: Чтобы расширить вопрос, как Visual Studio знает, как добавить пункт меню «Контроллер ...» в меню «Добавить», если щелкнуть правой кнопкой мыши папку «Контроллеры» в обозревателе решений приложения MVC? Точно так же он добавляет пункт меню «Просмотр ...» в меню «Добавить», когда вы щелкаете правой кнопкой мыши по папке «Виды». Откуда Visual Studio получает эту информацию и как я могу добавить эти 2 папки в другое веб-приложение и получить такую ​​же функциональность?

Идеи

Ответы [ 3 ]

2 голосов
/ 28 марта 2009

Я считаю, что логика для этого содержится в DLL

Microsoft.VisualStudio.Web.ExtensionsUI

Который зарегистрирован в шаблоне проекта, который используется при создании нового проекта ASP.NET MVC:

<WizardExtension>
  <Assembly>
    Microsoft.VisualStudio.Web.Extensions, 
    Version=9.0.0.0, 
    Culture=neutral, 
    PublicKeyToken=31bf3856ad364e35
  </Assembly>
  <FullClassName>
    Microsoft.VisualStudio.Web.Mvc.TemplateWizard
  </FullClassName>
</WizardExtension>

C: \ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ IDE \ ProjectTemplates \ CSharp \ Web \ 1033 \ MvcWebApplicationProjectTemplatev1.cs.zip

Возможно, вы также можете возиться с Руководствами типов проектов в вашем файле .xxproj:

<ProjectTypeGuids>
  {603c0e0b-db56-11dc-be95-000d561079b0};
  {349c5851-65df-11da-9384-00065b846f21};
  {fae04ec0-301f-11d3-bf4b-00c04f79efbc}
</ProjectTypeGuids>

Похоже, что они используются по умолчанию для проекта ASP.NET MVC, сравните их с аналогичными в вашем веб-приложении и перейдите оттуда.

Однако, во многих из этих обстоятельств я согласен с gisresearch: часто проще сначала создать более сложный проект (MVC), а затем переместить в него оригинал.

Кроме того, ничто не мешает вам размещать несколько проектов в одном и том же веб-приложении - вытянуть общую логику из веб-приложения в общую библиотеку классов, а затем сослаться на нее из чистого приложения MVC с немного другим пространством имен, а затем объедините два сайта в IIS, поместите dll-файлы в общую папку bin (или строго назовите их и поместите в глобальный кэш сборок), поделитесь изображениями / сценариями, и все - вы просто должны позаботиться о Global.asax, который будет общим для обоих.

0 голосов
/ 08 мая 2009

Как упомянул Zhaph, добавление ProjectTypeGuid работает для меня. Выгрузите веб-проект, отредактируйте и добавьте дополнительный ProjectTypeGuid в существующий список.

{603c0e0b-db56-11dc-be95-000d561079b0};

0 голосов
/ 28 марта 2009

Как насчёт обратного. Сначала создайте проект mvc asp.net, а затем добавьте код веб-формы.

Вот пример гибридного приложения от Скотта Хансельмана.

Вы также можете создать одно приложение mvc asp.net по умолчанию и приложение веб-формы asp.net, а затем выполнить сравнение текста двух проектов, чтобы увидеть, в чем разница.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...