2012-08-17 14 views
8

Ich verwende den ASP.NET MVC SiteMap-Anbieter in einem Projekt, und es funktioniert gut. Mir fällt es schwer, herauszufinden, wie man einen Menüeintrag jedoch versteckt. Der Menüpunkt, den ich in der globalen Navigation nicht anzeigen möchte, ist meine "Site Map" -Seite. Jetzt weiß ich, dass mir auf dem mvcSiteMapNode etwas namens VisibilityProvider zur Verfügung steht - aber ich kann nicht herausfinden, wie es funktioniert.ASP.NET MVC SiteMap-Anbieter - So verbergen Sie einzelne Elemente im aktuellen Menü

Antwort

5

Zuerst empfehle ich Ihnen, diese Wiki-Seite zu lesen: Creating a Custom SiteMapNodeVisibilityProvider. Dann für den spezifischen Knoten, die auf Ihre Site Map Seite verweist, erklären es so:

<mvcSiteMapNode title="Site Map" controller="Home" action="Map" visibility="false" /> 

Wenn nun die IsVisible Verfahren implementiert (in der Wiki-Seite oben verlinkten gezeigt), können Sie dies tun:

string visibility = mvcNode["visibility"]; 

// Is a visibility attribute specified? 
if (!string.IsNullOrEmpty(visibility)) 
{ 
    isVisible = Convert.ToBoolean(mvcNode["visibility"]); 

    if (!isVisible) 
    { 
      return false; 
    } 
} 

return true; 
6

Aus meiner Antwort hier erklärt, wie Sie die verfügbaren Knoten und Optionen ausblenden.

https://stackoverflow.com/a/27095721/853295

Sie diese Anleitung verwenden sollten, wie ein Knoten

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

Einige Einstellungen verstecken Sie über den Link oben einstellen:

<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> 

Sobald Sie hinzugefügt haben Fügen Sie in den App-Einstellungen Folgendes zu jedem Knoten hinzu, den Sie in den Breadcrumbs sehen möchten, aber nicht im Menü:

visibility="SiteMapPathHelper,!*" (SiteMapPathHelper - der Knoten in der SiteMapPath sichtbar ist, * - es ist für alle anderen Steuerelemente unsichtbar ist!)

zB:

<mvcSiteMapNode title="Administration" area="Admin" clickable="false" visibility="SiteMapPathHelper,!*" /> 

Andere Optionen zur Verfügung:

Typ .......................... Was es betrifft
CanonicalHelper ....... Die Canonical HTML-Helfer
MenuHelper .............. Das Menü HTML Helper
MetaRobotsHelper .... Die Meta-Roboter HTML Helper
SiteMapHelper .......... Der SiteMap HTML Helper
SiteMapPathHelper ... der SiteMapPath HTML Helper
SiteMapTitleHelper ... der Titel HTML Helper
XmlSiteMapResult .... die Sitemaps XML-Ausgabe des /sitemap.xml Endpunkt

+0

Dies ist die einfachste Lösung, weil es tut benötige keinen zusätzlichen Code. –