我最近在尝试使用MvcSiteMapProvider 时遇到了障碍。
在我的申请中,我有三个不同的区域:登陆、申请和管理。我目前已经实现了 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 内容复制/粘贴到一个新的母版中,只是为了一个区域,我宁愿它动态地选择正确的提供者。