2015-08-18 92 views
0

我正在使用MvcSiteMapProvider在我的應用程序中生成麪包屑。使用麪包屑可以有兩種不同的路徑嗎?

@Html.MvcSiteMap().SiteMapPath() 

在應用程序中,我們有一個批處理實體和一個物品實體。批次有物品。但是在應用程序中可以訪問項目而不需要通過特定的批處理。

我想顯示路徑後接用戶,如果她已經批這樣過去了:

首頁 - >批次 - > [BatchNumber] - > [項目]

如果該項目直接訪問,我想表明這樣的路徑:

首頁 - >產品 - > [項目]

我mvc.sitemap配置如下:

<mvcSiteMapNode title="$resources:Resources.Resources,Home" controller="Home" action="Index" preservedRouteParameters="culture"> 
    <mvcSiteMapNode title="$resources:Resources.Resources,Batch" controller="Batch" action="Index" preservedRouteParameters="culture"> 
     <mvcSiteMapNode title="$resources:Resources.Resources,NewBatch" controller="Batch" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" /> 
     <mvcSiteMapNode title="Edit" controller="Batch" action="Edit" preservedRouteParameters="culture,batchId" visibility="SiteMapPathHelper,!*"> 
     <mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId,batchId" visibility="SiteMapPathHelper,!*"> 
     </mvcSiteMapNode> 
     <mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture,noLot" visibility="SiteMapPathHelper,!*" /> 
     </mvcSiteMapNode> 
    </mvcSiteMapNode> 
    <mvcSiteMapNode title="$resources:Resources.Resources,Item" controller="Item" action="Index" preservedRouteParameters="culture"> 
     <mvcSiteMapNode title="Item" controller="Item" action="Edit" preservedRouteParameters="culture,itemId" visibility="SiteMapPathHelper,!*"> 
     </mvcSiteMapNode> 
     <mvcSiteMapNode title="$resources:Resources.Resources,NewItem" controller="Item" action="Create" preservedRouteParameters="culture" visibility="SiteMapPathHelper,!*" /> 
    </mvcSiteMapNode> 
    </mvcSiteMapNode> 

可以這樣做嗎?

隨着示出的路徑中的當前配置總是:

首頁 - >批次 - > [BatchNumber] - > [項目]

如果I反mvc.sitemap內的訂單文件它總是顯示:

首頁 - >產品 - > [項目]

回答

0

第一場比賽總是獲勝,並使用相同的路線值的多個節點配置爲不支持

SiteMap根本沒有使用會話狀態,因此沒有用戶訪問過的「上一個URL」的概念。請參閱How To Make MvcSiteMapProvider Remember a User's Position瞭解其工作原理的完整說明。

唯一的內置選項是add additional information to the URL(路徑或查詢字符串)來區分URL,因爲第一個匹配總是勝出。當用戶處於「傳遞」頁面時,您可能會生成不同的URL。

但是,也可以使用依賴注入來替換MvcSiteMapProvider的匹配行爲,以便它可以匹配會話狀態值。如果你這樣做了,那麼這個URL不需要有所不同,但是你仍然需要在每個「傳遞」頁面上設置一個會話狀態鍵和值。只要你一直配置默認頁面,當用戶不通過任何頁面時,它應該工作正常。請參閱demo projectexplanation how to use it

+0

我添加了自定義路線,它工作。謝謝。 – vintem

相關問題