Sto utilizzando il provider ASP.NET MVC SiteMap in un progetto e funziona perfettamente. Sto attraversando un momento difficile cercando di capire come nascondere una voce di menu. La voce di menu che voglio nascondere dalla visualizzazione nella navigazione globale è la mia pagina "Mappa del sito". Ora so che c'è qualcosa chiamato VisibilityProvider
disponibile per me su mvcSiteMapNode - ma non riesco a capire come farlo funzionare.Provider MVM SiteMap ASP.NET - Come "nascondere" singoli elementi nel menu attuale
risposta
Per prima cosa, ti suggerisco di leggere questa pagina wiki: Creating a Custom SiteMapNodeVisibilityProvider. Poi per il nodo specifico che punta alla tua pagina Mappa del sito, dichiarare in questo modo:
<mvcSiteMapNode title="Site Map" controller="Home" action="Map" visibility="false" />
Ora, in sede di attuazione del metodo IsVisible
(mostrato nella pagina wiki linkato sopra), si può fare questo:
string visibility = mvcNode["visibility"];
// Is a visibility attribute specified?
if (!string.IsNullOrEmpty(visibility))
{
isVisible = Convert.ToBoolean(mvcNode["visibility"]);
if (!isVisible)
{
return false;
}
}
return true;
Tratto dalla mia risposta qui che spiega come nascondere i nodi e le opzioni disponibili.
https://stackoverflow.com/a/27095721/853295
Si dovrebbe usare questa guida su come nascondere un nodo
Alcune impostazioni è possibile impostare dal link qui sopra:
<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>
Una volta aggiunti le impostazioni dell'app, aggiungi quanto segue a qualsiasi nodo che vuoi vedere nel breadcrumb ma non al menu:
visibility="SiteMapPathHelper,!*"
(SiteMapPathHelper - il nodo è visibile nella SiteMapPath, * - è invisibile per tutti gli altri controlli!)
esempio:
<mvcSiteMapNode title="Administration" area="Admin" clickable="false" visibility="SiteMapPathHelper,!*" />
Altre opzioni disponibili:
Tipo .......................... Che cosa influenza
CanonicalHelper ....... L'helper HTML canonico
MenuHelper .............. Il menu HTML Helper
MetaRobotsHelper .... L'HTML Helper Meta Robots
SiteMapHelper .......... L'helper HTML SiteMap
SiteMapPathHelper ... il Helper SiteMapPath HTML
SiteMapTitleHelper ... il Helper Titolo HTML
XmlSiteMapResult .... l'uscita sitemap XML del /sitemap.xml endpoint
Questa è la soluzione più semplice, perché lo fa non richiede codice aggiuntivo. –