這是我的導航層次結構。帶有多個控制器名稱的MVC3的路徑問題
- 目錄
-Collection
- 媒體
- 屬性
- 用戶 - 收集
- 媒體
- 產品
- 屬性
我有控制器所有。這是我的網址應該是什麼樣子
http://Localhost/Catalog/Collection/1 // return all collection for catalogeid 1
http://Localhost/Catalog/Media/1 // return all media for catalogeid 1
http://Localhost/Collection/Media/1 // return all media for collectionid 1
現在用默認路由
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
它看起來對行動」集」我的‘目錄’控制器,因爲我已經定義‘列表’方法「收集」控制器,我不想重新定義在我的「收藏」相同 後來我想這
routes.MapRoute(
"Catalog_Collection_List", // Route name
"Catalog/Collection/{id}", // URL with parameters
new { controller = "Collection", action = "List", id = UrlParameter.Optional } // Parameter defaults
);
但結果是一樣的。 另一個問題是如何在上面提到的生成鏈接。 我不能使用
@Html.ActionLink("Collection","Collection", "List", new { id = 1 })
由於這會產生像
Localhost/Collection/List/1 //I don’t want
鏈接我的最終目標是,所有的行動與「收藏」應該在「收藏」控制器去。 我不知道我錯過了什麼。 希望我的問題很清楚。 感謝您的任何幫助。
編輯
使我的問題更清楚。看看這個示例網址
localhost/Catalog/Media/1 // which gives media for catalog
localhost/Collection/Media/1 // which gives media for collection.
現在根據傳統的方式,我必須在每個控制器中定義「媒體」行動。我不想要。我想要的是基於URL我想調用「媒體」控制器「列表」行動。 我希望這很清楚。
您是否嘗試更改路線的順序?這很重要 –
thx @Emmanuel。我不明白這一點。我必須改變的順序是什麼? – Nnp
您的路線被添加到global.asax上的順序,[檢查此](http://www.freddes.se/2009/12/09/the-importance-of-the-order-of-routes-in -asp-net-mvc /) –