如何在WebForms项目中启用MVC?

时间:2014-12-18 18:29:43

标签: 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("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配置无关,所以我认为这真的很“容易”。

3 个答案:

答案 0 :(得分:4)

在查看默认的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" />

并且:

  <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>

答案 1 :(得分:0)

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

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

然后将所有现有的webforms代码从旧项目复制到新项目。按照这个演练。

https://docs.microsoft.com/en-us/aspnet/visual-studio/overview/2013/one-aspnet-integrating-aspnet-web-forms-mvc-and-web-api

如果由于某种原因你不能这样做,那么一个更复杂的过程就是创建新项目,然后将它与你现有的项目进行比较,找出你需要的web.config条目(承担)请注意,Views文件夹中还有一个web.config,以及需要安装哪些nuget包。我强烈建议采用第一种方法,因为第二种方法更为复杂。

答案 2 :(得分:0)