ASP.NET MVC SiteMap 提供程序——如何在实际菜单中“隐藏”单个项目
Posted
技术标签:
【中文标题】ASP.NET MVC SiteMap 提供程序——如何在实际菜单中“隐藏”单个项目【英文标题】:ASP.NET MVC SiteMap provider -- How to 'hide' single items in the actual menu 【发布时间】:2012-08-13 23:27:19 【问题描述】:我在一个项目中使用 ASP.NET MVC SiteMap 提供程序,它运行良好。但是,我很难弄清楚如何隐藏菜单项。我想在全局导航中隐藏的菜单项是我的“站点地图”页面。现在我知道在 mvcSiteMapNode 上有一个名为 VisibilityProvider
的东西可供我使用 - 但我似乎无法弄清楚如何让它工作。
【问题讨论】:
【参考方案1】:取自我在此处解释如何隐藏节点和可用选项的回答。
https://***.com/a/27095721/853295
您应该使用本指南了解如何隐藏节点
https://github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility-with-ISiteMapNodeVisibilityProvider
您可以从上面的链接中设置一些设置:
<appSettings>
<!-- Visibility will not filter to children -->
<add key="MvcSiteMapProvider_VisibilityAffectsDescendants" value="false"/>
<!-- Set default visibility provider -->
<add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider"/>
</appSettings>
添加应用设置后,将以下内容添加到您希望在面包屑中看到的任何节点,而不是菜单中:
visibility="SiteMapPathHelper,!*"
(SiteMapPathHelper - 节点在站点地图路径中可见,!* - 对于所有其他控件不可见)
例如:
<mvcSiteMapNode title="Administration" area="Admin" clickable="false" visibility="SiteMapPathHelper,!*" />
其他可用选项:
类型..........................它的影响 CanonicalHelper.......Canonical html Helper MenuHelper........菜单 HTML 帮助器 MetaRobotsHelper.... Meta Robots HTML 助手 SiteMapHelper........SiteMap HTML Helper SiteMapPathHelper...SiteMapPath HTML 帮助器 SiteMapTitleHelper...标题 HTML 帮助器 XmlSiteMapResult.... /sitemap.xml 端点的站点地图 XML 输出
【讨论】:
这是最简单的解决方案,因为它不需要额外的代码。【参考方案2】:首先,我建议您阅读此 wiki 页面:Creating a Custom SiteMapNodeVisibilityProvider。然后对于指向您的站点地图页面的特定节点,以这种方式声明它:
<mvcSiteMapNode title="Site Map" controller="Home" action="Map" visibility="false" />
现在,当实现 IsVisible
方法(如上面链接的 wiki 页面所示)时,您可以这样做:
string visibility = mvcNode["visibility"];
// Is a visibility attribute specified?
if (!string.IsNullOrEmpty(visibility))
isVisible = Convert.ToBoolean(mvcNode["visibility"]);
if (!isVisible)
return false;
return true;
【讨论】:
以上是关于ASP.NET MVC SiteMap 提供程序——如何在实际菜单中“隐藏”单个项目的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC 和 ASP.NET 成员资格模板提供程序
带有外部缓存提供程序的 ASP.NET MVC OutputCacheAttribute
是否可以在没有 web.sitemap 的情况下进行基于 ASP.NET 角色的表单身份验证和授权?