2013-06-21 29 views
1

我有一個MVC項目,並且正在使用MVCSiteMapProvider實現一個breadcrumb。MVCSiteMapProvider包含SiteMapPreserveRouteData的Breadcrumb與第二項消失

我MVC.sitemap是如下:

<mvcSiteMapNode title="Index" controller="Index" action="Index" key="Index"> 
    <mvcSiteMapNode title="Parent" controller="Parent" action="View" key="Parent" > 
     <mvcSiteMapNode title="Child" controller="Child" action="View" /> 
    </mvcSiteMapNode> 
</mvcSiteMapNode> 

我已經加入到_layout視圖

@Html.MvcSiteMap().SiteMapPath() 

我需要保存的參數來獲取正確的項目,當我返回到上一級項目。爲此,我在視圖操作中添加了註釋SiteMapPreserveRouteData:

[SiteMapPreserveRouteData] 
public ActionResult View(Guid id) 

現在,我可以使用我的麪包屑導航。

問題是它只適用於第一項。當我更改項目時,麪包屑消失...

示例: 我導航到父p2 - >子c1,並且在返回到索引並選擇父p1後,父母的查看頁面不顯示麪包屑。

它沒有發生,如果我刪除註釋SiteMapPreserveRouteData,但麪包屑失去了ID的話..

我在做什麼撥錯?一些想法?

謝謝

回答

1

問題很可能是您的方法。我根本不推薦使用SiteMapPreserveRouteData - 這是蠻力,更重要的是,其設計中採用的方法有缺陷。

我已經創建了一篇文章,深入介紹如何跟蹤用戶在站點地圖中的位置 - How to Make MvcSiteMapProvider Remember a User’s Position。瞭解這篇文章中的信息是製作不會消失的麪包屑痕跡的關鍵。