我正在尝试从我的网站菜单中隐藏节点,但是在我的面包屑中显示它
我在这里关注教程:https://github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility
<mvcSiteMapNode title="Create Customer" controller="Customer" action="Create" area="Home" clickable="false" visibility="SiteMapPathHelper,!*"/>
以上似乎不起作用。它会显示在我的网站菜单和面包屑中。
答案 0 :(得分:3)
我们创建了一个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<string, object> 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个参数,则设置面包屑节点本身的键
答案 1 :(得分:3)
您应该使用本指南来了解如何隐藏节点
您可以从上面的链接设置一些设置:
<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 - 该节点在sitemappath中可见,!* - 它对所有其他控件都不可见)
例如:
<mvcSiteMapNode title="Administration" area="Admin" clickable="false" visibility="SiteMapPathHelper,!*" />
其他可用选项:
类型 .......................... 它的影响 >
CanonicalHelper ....... Canonical HTML Helper
MenuHelper ..............菜单HTML助手
MetaRobotsHelper ....元机器人HTML助手
SiteMapHelper .......... SiteMap HTML Helper
SiteMapPathHelper ... SiteMapPath HTML Helper
SiteMapTitleHelper ...标题HTML助手
XmlSiteMapResult ....站点映射/sitemap.xml端点的XML输出
答案 2 :(得分:0)
将此添加到您的web.config
<appSettings>
<add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider"/>
<appSettings>