如何在 WebForms 项目中启用 MVC

本文关键字:启用 MVC 项目 WebForms | 更新日期: 2023-09-27 18:34:35

我有一个现有的网络表单项目。 我从 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 配置无关,所以我认为它真的"那么简单"。

如何在 WebForms 项目中启用 MVC

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

通过 nuget 安装 mvc 包。

https://www.nuget.org/packages/Microsoft.AspNet.Mvc/

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

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

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

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

如果出于某种原因无法以这种方式执行此操作,则更复杂的过程是创建新项目,然后将其与现有项目进行比较,并确定需要哪些 web.config 条目(请记住,视图文件夹中还有一个 web.config(,以及需要安装哪些 nuget 包。 不过,我强烈建议使用第一种方法,因为第二种方法涉及更多。