2010-02-15 185 views
0

我有一個客戶列表,將有發票和電子郵件鏈接到它。ASP.NET MVC路由和結構

我有我的客戶/信息/ 1和客戶/編輯/ 1%的默認路由工作,但想擁有它,而不是像下面

  • 客戶 - 列出客戶
  • 客戶/ 1 /編輯 - 編輯客戶ID 1
  • 客戶/ 1 /詳細信息 - 客戶ID的詳細信息1
  • 客戶/ 1 /發票 - 發票清單爲客戶ID 1
  • 客戶/ 1 /發票/ 3 - 發票的詳細信息客戶ID爲3 1

我設置以下的路由(默認路由之前)

routes.MapRoute("CustomerActions", 
    "customer/{customerid}/{action}/{id}", 
    new { controller = "customer", action = "details", id="" } 
); 

這似乎是工作,但在我的客戶編輯觀點我有一個像

<%=Html.ActionLink("Back to List", "Index") %> 

但它的ActionLink的給出的網址爲

/customer/1/index而不僅僅是/ customer或/ customer/index

回答

0

routes.MapRoute("Customer", 
    "customer/{customerid}/{action}/{id}", 
    new { controller = "customer", action = "details", id="" } 
); 

routes.MapRoute("Customers", 
    "customer", 
    new { controller = "customer", action = "List" } 
); 

至於鏈接:您可以通過兩種途徑嘗試

<%=Html.RouteLink("Back to List", "Customers", null) %> 
0

你嘗試

"{controller}/{action}/{id}", 
      // new { controller = "Customer", action = "Details", id = ""} 

無需客戶存在於你的RouteMap。

+0

不過,如果我指定的客戶/ 1 /細節它將把1的動作和細節,作爲標識 – 2010-02-15 05:44:04

0

您的路線是 「客戶/ {客戶ID}/{行動}/{ID}」

您指定行動= 「指數」,它需要從當前請求客戶ID(在你的情況下,1) 和我們/客戶/ 1 /指數

/客戶/ 1將控制器=「客戶」,客戶id = 1,行動=「詳細信息」根據你的默認

/客戶不會路由匹配,原因您沒有customerid的預設值