2016-03-07 83 views
1

我在嘗試配置ASP.NET MVC項目以將多個URL路由到相同視圖時遇到了一些麻煩。鑑於以下網址:將多個URL路由到ASP.NET MVC中的相同視圖

localhost:1234 
localhost:1234/Products 
localhost:1234/Products/1 
localhost:1234/Products/abcd 
localhost:1234/Products/whatever 

我想每一種路由用戶在同樣的觀點(Products.cshtml,例如)。

this site一個例子,我飾我的控制器行動,以特殊的路由屬性:

[HttpGet] 
[Route("Products/{id?}")] 
public ActionResult Products(string id) 
{ 
    return View(); 
} 

而且在我RouteConfig.cs文件,我有我的默認路由設置:

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Products", action = "Products", id = UrlParameter.Optional } 
); 

localhost:1234localhost:1234/Products鏈接都可以工作,但這不適用於其餘的URL。

+1

您是否記得在初始化代碼中的某處調用MapMvcAttributeRoutes()? –

+0

@MattiVirkkunen哦天啊,不,我沒有。這解決了一半的問題,但我稱這個功能,默認鏈接不再起作用。 – alex

+1

您可以在默認路由之前添加其他路由'url:「Products/{id}」,'(具有相同的默認值)並刪除'[Route(「Products/{id?}」)]'屬性 –

回答

1

這些屬性對我來說都是正確的,所以你可能只是忘記了映射屬性路由。請記得在初始化代碼的某個地方撥打MapMvcAttributeRoutes()