我有一个现有的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配置无关,所以我认为这真的很“容易”。
答案 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代码从旧项目复制到新项目。按照这个演练。
如果由于某种原因你不能这样做,那么一个更复杂的过程就是创建新项目,然后将它与你现有的项目进行比较,找出你需要的web.config条目(承担)请注意,Views文件夹中还有一个web.config,以及需要安装哪些nuget包。我强烈建议采用第一种方法,因为第二种方法更为复杂。
答案 2 :(得分:0)
通过nuget安装mvc包。