【发布时间】:2023-03-10 11:40:01
【问题描述】:
我最近在尝试使用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 内容复制/粘贴到新的母版中,我宁愿它动态选择正确的提供者。
【问题讨论】:
-
你试过使用mvcSiteMapNode的area属性吗?
-
这只改变了生成的链接(我目前使用“区域”,用于管理链接)。我希望生成一组完全不同的链接,这些链接实际上位于单独的文件 (admin.sitemap) 中,具体取决于我当前是否在“管理”区域中浏览。
标签: c# asp.net-mvc mvcsitemapprovider