C# 如何在WebForms项目中启用MVC?

C# 如何在WebForms项目中启用MVC?,c#,asp.net,asp.net-mvc,webforms,C#,Asp.net,Asp.net Mvc,Webforms,我有一个现有的webforms项目。我从Nuget添加了MVC5,并添加了以下内容: _Viewstart.cshtml Shared _Layout.cshtml Areas Test Controllers TestController.cs Views Test.cshtml 我的控制器: public class TestController : Controller { [Route("Te

我有一个现有的webforms项目。我从Nuget添加了MVC5,并添加了以下内容:

_Viewstart.cshtml
Shared
   _Layout.cshtml
Areas
   Test
      Controllers
        TestController.cs
      Views
        Test.cshtml
我的控制器:

     public class TestController : Controller
    {
    [Route("Test/Test")]
    public ActionResult Test()
    {
        return View();
    }
    }
我的
Global.asax

        AreaRegistration.RegisterAllAreas();
        BundleConfig.RegisterBundles(BundleTable.Bundles);
        RouteConfig.RegisterRoutes(RouteTable.Routes); 
然而,当我导航到
/Test/Test
时,我发现404找不到。我错过了什么

更新
最后,我在基于模板化MVC5项目的web.config中添加了一些内容,现在我找到了控制器方法和视图。我现在正在处理一些其他的事情,但我相信它与MVC配置无关,所以我认为它真的“那么简单”。

如果您使用的是MVC5,我最好的建议是创建一个全新的项目。在ASP.NET4.5和MVC5中,他们将这些技术组合到了一个ASP.NET中。这使某些事情变得更容易

创建一个新的ASP.NET WebForms应用程序,然后选中MVC复选框,如果您还需要WebApi(如果您不需要它,则可能选中WebApi复选框)

然后将所有现有webforms代码从旧项目复制到新项目。按照此演练进行操作


如果,无论出于何种原因,您不能这样做,那么更复杂的过程是创建新项目,然后将其与现有项目进行比较,找出您需要哪些web.config条目(请记住,视图文件夹中还有一个web.config),以及需要安装哪些nuget软件包。不过,我强烈建议使用第一种方法,因为第二种方法更为复杂。

在查看了默认的MVC5 web.config之后,将以下内容添加到我的配置中使我启动并运行:

    <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
    <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

以及:


通过nuget安装mvc软件包


我非常肯定MVC项目可以提供WebForms页面,但反过来就不行了。如果我错了,那就直击我的脸吧。这里有很多关于转换和集成的好信息:MVC不仅仅是安装nuget包。你必须有剃须刀,路由,和一堆其他的东西,以及安装。除此之外,还需要对web.config进行一系列更改。你可以从罗杰的留言开始,但那是给MVC4而不是MVC5的,所以记住这一点。@BrianDriscoll你错了。作为的一部分,每个web应用程序项目都只是ASP.NET,您可以从一个项目中混合和匹配web表单、MVC、web API和Signal。只有在“新建项目”对话框中使用组合项目模板而不是VS 2012模板时,才可能出现这种情况(但我不确定)。@SB2055-说“我解决了我的问题”,而不解释如何解决问题,这是非常不礼貌的。堆栈溢出的要点是,您的问题和答案不仅帮助您,而且还帮助可能有相同问题的其他人,您的问题和答案正在拒绝他们您的解决方案。指向演练的链接现在已关闭。演练已移至此处:
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
  </dependentAssembly>
  <dependentAssembly>
    <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
    <bindingRedirect oldVersion="1.0.0.0-5.2.2.0" newVersion="5.2.2.0" />
  </dependentAssembly>