如何在 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 配置无关,所以我认为它真的"那么简单"。
在查看默认的 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 包。 不过,我强烈建议使用第一种方法,因为第二种方法涉及更多。