2014-10-04 210 views
1

我有項目,地圖路線(這是所有):更改名稱

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

,我在控制有方法:

public ViewResult List(int id = 1) 
{ 
    ... 
} 

List.cshtml

@Html.ActionLink(i.ToString(), "List", "Product", new { id = i }, null) 

但我想更改id到頁面,但不會更改它在RouteConfig.cs,我認爲這是一些可以配置我的行動路線的屬性。我希望這個解決方案:

@Html.ActionLink(i.ToString(), "List", "Product", new { page = i }, null) 

​​

回答

1

您可以使用屬性路由覆蓋約定。

首先確保路由屬性啓用:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapMvcAttributeRoutes(); 

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

然後適當的屬性添加到您的控制器的方法,例如:

[Route("YourControllerName/List/{page?}")] 
public ViewResult List(int page = 1) 
{ 
    ... 
} 

問號使得頁面參數可選。

如果這是一個默認的控制器和

[Route("")] 
[Route("YourControllerName/List/{page?}")] 
public ViewResult List(int page = 1) 
{ 
    ... 
} 

更多屬性,路由可以在這裏找到: http://blogs.msdn.com/b/webdev/archive/2013/10/17/attribute-routing-in-asp-net-mvc-5.aspx