2015-09-08 46 views
1

我有一個項目,我們正在使用MVC 5和ASP.NET 5/dnx46啓動。我明白,MVC6有一些變化,但該項目可能會在MVC6超出測試版之前推出 - 即ASP.NET5/MVC5。MVC5/ASP.NET 5中的路由(vNext)

我遇到的問題是路由。

基於MVC5的任何東西都依賴於System.Web,它似乎不能很好地與其餘的項目配合使用。

那麼如何設置一個通用的MVC風格的路線呢?

我發現了一些資源,其中包括樣板代碼ton,但我無法想象MS爲了在MVC6之外完成一些基本路由而需要寫入/覆蓋所有內容?

+2

如果你需要mvc6/asp.net之前出貨的mvc5應用程序,你不能使用mvc5用asp.net 5.5是準備好你不應該嘗試使用任何部分asp.net 5. –

+0

[ASP.NET MVC Boilerplate](https://visualstudiogallery.msdn.microsoft.com/6cf50a48-fc1e-4eaf-9e82-0b2a6705ca7d)可以幫助你找出如何更快地翻譯你的代碼。它具有比標準項目模板更多的開箱即用功能。 –

回答

2

ASP.NET MVC 5僅在ASP.NET 4.x上運行。

ASP.NET MVC 6僅在ASP.NET 5上運行(使用DNX)。

MVC版本不能在ASP.NET版本之間混用。然而,ASP.NET MVC 5和ASP.NET MVC 6仍然非常相似,儘管它們當然也有一些重大變化。

例如,儘管路由功能在MVC 5和MVC 6之間在很大程度上非常相似,但您註冊路由的地方是不同的。在ASP.NET MVC 6應用程序中查看how to register routesMusic Store示例應用程序。

0

將以下內容添加到您的Startup.cs中以獲得MVC運行。

public void ConfigureServices(IServiceCollection services) 
{ 
    services.ConfigureRouting(
     routeOptions => 
     { 
      // All generated URL's should append a trailing slash. 
      routeOptions.AppendTrailingSlash = true; 

      // All generated URL's should be lower-case. 
      routeOptions.LowercaseUrls = true; 
     }); 

    services.AddMvc(); 
} 

public void Configure(IApplicationBuilder application) 
{ 
    application.UseMvc(); 
} 

屬性路由默認情況下添加,這樣你就可以使用[Route]和/或[HttpGet]/[HttpPost]屬性來代替。

[Route("[controller]")] // [controller] is replaced by 'car'. 
public class CarController : Controller 
{ 
    [Route("hello")] // Or use [HttpGet] 
    public string World() 
    { 
     return "World"; 
    } 
} 

舊學校路由需要更多的工作。你必須在Startup.cs添加路由

application.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "route1", 
      template: "hello", 
      defaults: new { controller = "Car", action = "World" }); 
    });