Asp.NET MVC 站点地图

Asp.NET MVC SiteMaps

您好所以我正在尝试将多个地图添加到项目中,在网络配置中我是这样写的:

 <siteMap defaultProvider="FullSiteMap">
  <providers>
    <clear />
    <add name="FullSiteMap" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/SiteMaps/Full.Sitemap" attributesToIgnore="visibility" />
    <add name="NonPrivateCoaching" type="MvcSiteMapProvider.DefaultSiteMapProvider, MvcSiteMapProvider" siteMapFile="~/SiteMaps/NonPrivateCoaching.Sitemap" attributesToIgnore="visibility" />
  </providers>
</siteMap>

之后我尝试在视图中使用它,如下所示:

@if(true)
{
     @Html.MvcSiteMap().Menu("BootstrapMenuHelperModel")
}
else
{
     @Html.MvcSiteMap().Menu("BootstrapMenuHelperModelNobPrivateCoaching")
}

它总是使用 defaultProvider 而不是第二个。这里有什么问题?

您没有选择提供商:

@if(true)
{
     @Html.MvcSiteMap("FullSiteMap").Menu("BootstrapMenuHelperModel")
}
else
{
     @Html.MvcSiteMap("NonPrivateCoaching").Menu("BootstrapMenuHelperModelNobPrivateCoaching")
}

Using Multiple MvcSiteMaps

老是用defaultProvider是什么意思?您的 if/else 声明没有任何意义?您必须定义要使用的站点地图提供程序。您不会在此处执行此操作,因此它将始终采用默认提供程序。

将您的代码更改为如下内容:

@Html.MvcSiteMap("YOURPROVIDEROFCHOICE").Menu()