9

我使用的是Visual Studio 2013 RC版本中包含的ASP.NET 5 RC的屬性路由。使用asp.net屬性路由的根路徑的默認路由

我想要的根路徑/,導致規範/Home/Index路徑,但我找不到一種方法來做到這一點只是屬性路由。是否有可能,如果不是,如果我還使用OWIN SelfHost,我該如何做?換句話說,我在WebApp.Start<T>方法(其中T在啓動時調用Configure(IAppBuilder)方法)手動設置我自己的HttpConfiguration類,並且不通過RouteTable.Routes對象。或者我應該通過RouteTable.Routes對象?我沒有多少運氣與當我試圖...

編輯:這是我到目前爲止已經試過:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

config.Routes.MapHttpRoute(
    name: "DefaultWeb", 
    routeTemplate: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

第二試試下面看起來有點可疑,因爲它不是明確我的HttpConfiguration對象是如何與靜態RouteTable.Routes對象:

// normal Web API attribute routes 
config.MapHttpAttributeRoutes(); 

RouteTable.Routes.MapRoute(
    name: "DefaultWeb", 
    url: "{controller}/{action}", 
    defaults: new { controller = "Home", action = "Index" } 
); 

回答

26

您可以設置應用程序是這樣的默認路由:

[Route("~/", Name = "default")] 
    public ActionResult Index() { 
     return View(); 
    } 
+0

我得到了「當前請求是採用以下操作方法之間的曖昧:」 ......嘗試這種時候。我將[RoutePrefix(「home」)]添加到我的控制器定義中,並將[Route]更改爲[Route(「index」)]以消除歧義。 /(默認)和/ home/index都可以工作。 –

+2

我也得到了模棱兩可的錯誤,並且模糊性指向了同一個控制器。我刪除了上面顯示的「[Route]」,現在它可以工作。 – HK1

0

對於任何使用.NET Core 1.x的人,您都需要這樣做,以及使用Jay的上述答案。

在您的Startup.cs文件中,將此添加到您的Configure方法中。

app.UseMvcWithDefaultRoute();

然後,你想要作爲默認的任何控制器動作,把屬性[Route("", Name = "default")]