如何从WebForms应用程序激活VS2008中的MVC模板

时间:2009-03-28 01:24:25

标签: asp.net-mvc templates webforms

我正在将ASP.NET MVC添加到WebForms应用程序中。您从头开始创建的ASP.NET MVC解决方案的一个简洁功能是右键单击解决方案资源管理器并添加> New Item ...将提供包含MVC模板的模板列表。但是,在WebForms应用程序中,这些模板不会出现。

我认为.sln解决方案文件中可能有一个设置表明其中一个是ASP.NET MVC应用程序,但我找不到任何突出的内容。

编辑:要扩展问题,当您右键单击MVC应用程序的解决方案资源管理器中的Controllers文件夹时,Visual Studio如何知道在“添加”菜单上添加“控制器...”菜单项?同样,当您右键单击Views文件夹时,它会在“Add”菜单中添加“View ...”菜单项。 Visual Studio从哪里获取此信息,如何将这两个文件夹添加到另一个Web应用程序并获得相同的功能?

想法?

3 个答案:

答案 0 :(得分:2)

我相信它的逻辑包含在dll中

  

Microsoft.VisualStudio.Web.ExtensionsUI

在创建新的ASP.NET MVC项目时使用的Project模板中注册了该文件:

<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项目的默认项目,将它们与Web应用程序中的项目进行比较,并从那里开始。

但是,在很多这种情况下我都同意gisresearch:首先创建更复杂的项目(MVC)更容易,然后将原始项目移动到其中。

此外,没有什么可以阻止你在同一个Web应用程序中托管多个项目 - 将公共逻辑从Web应用程序拉入共享类库,然后从一个干净的MVC应用程序引用它,命名空间略有不同,然后合并IIS中的两个站点,将dll放入共享bin文件夹(或强烈命名它们并将它们放入全局程序集缓存中),共享图像/脚本,然后离开 - 你只需要注意Global.asax,这两者都很常见。

答案 1 :(得分:0)

反过来怎么样。首先创建一个asp.net mvc项目,然后添加您的Web表单代码。

以下是Scott Hanselman的hybrid app示例。

您也可以考虑创建一个默认的asp.net mvc应用程序和asp.net Web表单应用程序,然后对两个项目进行文本比较,看看有什么区别。

答案 2 :(得分:0)

与Zhaph一样,添加ProjectTypeGuid对我有用。卸载Web项目,编辑并将额外的ProjectTypeGuid添加到现有列表中。

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