MVC SiteMap从menuhelper隐藏节点,但在sitepathhelper中显示(breadcrumbs)

我正在尝试从我的站点菜单中隐藏节点,但是在我的面包屑中显示它

我在这里按照教程: https : //github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility

 

以上似乎不起作用。 它显示在我的网站菜单和面包屑中。

我们创建了一个OnlyBreadCrumbMVCSiteMapNodeAttribute。 我们装饰我们想要属性的任何代码

 public class OnlyBreadCrumbMvcSiteMapNodeAttribute : MvcSiteMapNodeAttribute { public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey) { Title = title; ParentKey = parentKey; VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName; } public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey, string key) { Title = title; Key = key; ParentKey = parentKey; VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName; } } 

还有一个可见的提供者

 public class BreadCrumbOnlyVisibilityProvider : ISiteMapNodeVisibilityProvider { public bool IsVisible(SiteMapNode node, HttpContext context, IDictionary sourceMetadata) { if (sourceMetadata["HtmlHelper"] == null || (string)sourceMetadata["HtmlHelper"] == "MvcSiteMapProvider.Web.Html.SiteMapPathHelper") { return true; } return false; } } 

使用像

  [OnlyBreadCrumbMvcSiteMapNode("Upload Documents", "AssetDocuments")] public virtual ActionResult FileUpload(int assetId) 

上传文件将是面包屑标题。 AssetDocuments是父键

如果传递第3个参数,则设置面包屑节点本身的键

您应该使用本指南来了解如何隐藏节点

https://github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility-with-ISiteMapNodeVisibilityProvider

您可以从上面的链接设置一些设置:

       

添加应用程序设置后,将以下内容添加到要在面包屑中看到的任何节点,而不是菜单:

visibility="SiteMapPathHelper,!*" (SiteMapPathHelper – 该节点在sitemappath中可见,!* – 它对所有其他控件都不可见)

例如:

  

其他选择:

键入 …………………….. 它会影响什么
CanonicalHelper ……. Canonical HTML Helper
MenuHelper …………..菜单HTML助手
MetaRobotsHelper ….元机器人HTML助手
SiteMapHelper ………. SiteMap HTML Helper
SiteMapPathHelper … SiteMapPath HTML Helper
SiteMapTitleHelper …标题HTML帮助器
XmlSiteMapResult ….站点映射/sitemap.xml端点的XML输出

将其添加到您的web.config中