2015-09-06 111 views
0

我使用MvcSiteMapProvider僅用於在我身邊顯示BreadCrumb。我在我的應用程序中使用CRUD屏幕有多個主人(特別是27)。每個主人都有一個控制器,具有索引,創建,編輯,詳細和刪除操作。 我不想在每個動作的細節麪包屑,只有控制器是足夠的。 如
1.組織設置:
- 科集團
*部門
- 項目組
*項目
- 等團體我可以爲多個操作配置一個MvcSiteMapProvider節點嗎?

現在,當我配置MvcSiteMapProvider XML網站地圖,我需要這樣的事

<mvcSiteMapNode title="Department Group" controller="DeptGrp" action="*"> 
    <mvcSiteMapNode title="Department" controller="department" action="*" /> 
</mvcSiteMapNode> 
<mvcSiteMapNode title="Project Group" controller="PrjGrp" action="*"> 
    <mvcSiteMapNode title="Project" controller="project" action="*" /> 
</mvcSiteMapNode> 

但是,MvcSiteMapProvider確實允許動作名稱爲「*」。它需要具體。如何在控制器上配置地圖,何時在節點選擇中發揮任何重要作用,在sitemaphelper中顯示breadcrumb?

我用它顯示麪包屑

@Html.MvcSiteMap().SiteMapPath() 

回答

1

不,這是不可能的,以配合單個節點不止一個動作。

的想法是,你需要創建在MvcSiteMapProvider配置的層次結構進行導航,因爲MVC不會自動提供一個。請注意,您可以使用visibility providers來隱藏您不希望顯示在SiteMapPath中的任何節點。

如果您遵循特定的慣例,你可以使用一個dynamic node provider或實現ISiteMapNodeProvider和使用Reflection發現你的行動所以增加了自動每人一個節點。

另一個選擇是用一個參數每個控制器上使用單個動作。在這種情況下,您可以對該參數的每個值使用preservedRouteParametersforce a match,然後您將只需要整個控制器的單個節點。

但無論是哪種情況,你需要爲每個操作節點。

相關問題