我最近碰到一個試圖使用MvcSiteMapProvider的路障。使用多個MvcSiteMaps
在我的應用程序中,我有三個不同的方面:着陸,應用程序和管理。我目前已經實現了MvcSiteMapProvider,它的工作原理非常驚人,但我現在要做的是使用Html MvcSiteMap Helper,並根據我所在的區域指定不同的地圖提供者。
因此,當我是:
- 在「管理」區域 - 我想使用名爲「AdminSiteMapProvider」的提供程序。
- 在「應用程序」區域 - 我想使用名爲「AppSiteMapProvider」的提供程序。
我已經試過如下:
共享 - > _AppLayout.cshtml
@Html.Partial("_Menu")
共享 - > _Menu.cshtml
@{
if (HttpContext.Current != null && HttpContext.Current.Handler is System.Web.Mvc.MvcHandler)
{
var handler = HttpContext.Current.Handler as System.Web.Mvc.MvcHandler;
var currentArea = handler.RequestContext.RouteData.Values["area"] ?? string.Empty;
if (!string.IsNullOrEmpty(currentArea.ToString()))
{
<text>@Html.MvcSiteMap("AppSiteMapProvider").Menu()</text>
}
else if (currentArea.ToString() == "Admin")
{
<text>@Html.MvcSiteMap("AdminSiteMapProvider").Menu()</text>
}
}
}
任何建議?我不想將_AppLayout.cshtml內容複製/粘貼到一個新區域,只是爲了一個區域,我寧願動態地選擇正確的提供程序。
您是否嘗試過使用mvcSiteMapNode的區域屬性? –
2012-02-27 13:48:26
這隻會改變生成的鏈接(我目前使用「area」作爲管理鏈接)。我期望生成一組完全不同的鏈接,這些鏈接字面上位於單獨的文件(admin.sitemap)中,具體取決於我目前是否在「管理」區域中進行瀏覽。 – Kori 2012-02-27 14:21:19