我已經看到一些關於導航和麪包屑的文章,但沒有找到exaxt相同的問題。但如果有的話,請原諒並指向我。謝謝。MVC3導航和麪包屑 - 數據驅動
我的情況:
Interests Profiles
| |
|_Interest Area 1 |-Profile Area 1
| | |
| |_Interest Area 1.1 |_List of Books
| | |
| |_List of Books |_Book Detail
| |
| |_Book Detail
|_Interest Area 2
|
|_List of Books
|
|_Book Detail
層次結構存儲在數據庫中。入口點興趣和配置文件已修復。從那裏我不知道孩子會是什麼。
當沒有孩子離開了,根據最後的選擇(子)類的價值在書本中獲取的。
我這裏有兩個問題:第一個 :創建相應的路由。我想它的方式是:
/books/{id}/{interestareaname}/{subinterestareaname}/{books}/{page}
其中interestareaname添加用戶友好的URL,並不斷得到重複,只要你去了層次。那麼輸出將是: /書籍/ 1 /項目管理/ PRINCE2 /書籍/ 1 這顯示分頁末頁第1
對PRINCE2的書籍,但只有當一個級別的路線只包含一個interestareaname,從而成爲這樣的:
/book/{id}/{interestareaname}/{books}/{page}
我所做的,解決問題的編號爲1:
routes.MapRoute(
"Details",
"view/details/{id}/{booktitle}",
new { controller = "book", action = "Details", id = "*", booktitle= "*"});
routes.MapRoute(
"interests",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
routes.MapRoute(
"profiles",
"books/{id}/{level1}/{level2}/{level3}/{page}",
new { controller = "book", action = "books", level1 = "*", level2 = "*", level3 = "*", id = "0", page = UrlParameter.Optional }
);
我這個最後說,一個最高級別應設置。那只是因爲我不知道如何使它更具活力。
現在的問題是區分利益類別和配置文件類別。我通過創建一個相同的路由,但使用不同的名稱,並在網站地圖創建中添加路由名稱。
我的第二個問題是網站地圖和麪包屑。 我使用MVCsitemapprovider和DynamicNodes功能。
隨着站點地圖,我有一個問題,顯示詳細信息頁面。因爲這些書會出現在個人資料和興趣上。有些書會出現在多個興趣領域或檔案中。 在每種情況下,我都希望看到我用來閱讀該書的路徑。
首先,我增加了對每本書的網站地圖的詳細信息頁面,但是那是瘋了。並創建網站地圖不能很好處理的重複條目。 其他選項是通過querystring將列表頁面上的routedata傳遞到詳細信息頁面,但看起來很糟糕,然後我添加了邏輯來解析查詢字符串以模仿麪包屑,這將很難,因爲我只有ID然後是最低級別。
我已經度過了很多夜,我仍然無法想象。如果有人能夠幫助或指引我正確的方向,我非常感激。
由於其他路線從未到達(通過使用routedebugger發現),因此路線已縮減爲一條路線。通過使用UrlParameter.Optional來解決列表中分頁的問題。現在剩下的唯一問題就是在進入書籍的詳細頁面時顯示麪包屑。 – Mounhim 2012-02-06 22:06:20