2014-12-18 127 views
3

我有一個現有的webforms項目。我從加入的NuGet MVC5,並增加了以下內容:如何在WebForms項目中啓用MVC?

_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未找到。我錯過了什麼?

UPDATE 我結束了基於模板化MVC5項目增加了一些事情,我的web.config和我現在有被擊中的控制方法和觀點被定位。我現在正在處理其他事情,但我相信它與MVC配置無關,所以我認爲它確實「非常容易」。

+0

我敢肯定,MVC項目能容納的WebForms頁面,而不是周圍的其他方式。如果我錯了,就把我拍到臉上。 –

+0

關於轉換和整合的很多好的信息在這裏:http://rachelappel.com/integrating-aspnet-web-forms-and-aspnetmvc – rogerdeuce

+1

MVC比安裝nuget包更多。你必須安裝Razor,路由和其他一些東西。最重要的是,你需要做一堆web.config的更改。你可以從羅傑的消息開始,但是對於MVC4而言,不是MVC5,所以請牢記這一點。 –

回答

3

看着默認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> 
0

如果您使用的是MVC5,我最好的建議是創建一個全新的項目。在ASP.NET 4.5和MVC5中,他們已將這些技術組合到他們稱之爲One ASP.NET中。這使得某些事情更容易。

創建一個新的ASP.NET WebForms應用程序,然後選擇MVC複選框,如果還需要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軟件包。儘管我會強烈建議第一種方法,因爲第二種方法涉及更多。

+0

演練的鏈接現已停止。 –

+0

演練已移至此處:https://docs.microsoft.com/en-us/aspnet/visual-studio/overview/2013/one-aspnet-integrating-aspnet-web-forms-mvc-and-web-api – abney317

相關問題