2012-08-17 11 views
8

Korzystam z dostawcy ASPMNET MVC SiteMap w projekcie i działa świetnie. Mam trudny czas, próbując dowiedzieć się, jak ukryć pozycję w menu. Element menu, który chcę ukryć przed wyświetleniem w nawigacji globalnej, to moja strona "Mapa strony". Teraz wiem, że coś jest nazywane VisibilityProvider dostępnym na mvcSiteMapNode - ale nie mogę wymyślić, jak to zrobić.ASP.NET MVC SiteMap provider - jak "ukryć" pojedyncze elementy w aktualnym menu

Odpowiedz

5

Po pierwsze, proponuję przeczytać tę stronę wiki: Creating a Custom SiteMapNodeVisibilityProvider. Wtedy dla danego węzła, który wskazuje na swojej stronie Mapa strony, zadeklarować to w ten sposób:

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

Teraz, przy realizacji sposobu IsVisible (pokazany na stronie wiki powiązany powyżej), można to zrobić:

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

Z mojej odpowiedzi tutaj wyjaśniono, jak ukryć węzły i dostępne opcje.

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

Należy skorzystać z tej instrukcji, w jaki sposób ukryć węzeł

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

Niektóre ustawienia można ustawić z linku powyżej:

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

Po dodaniu ustawienia aplikacji, dodaj następujące elementy do dowolnego węzła, który chcesz wyświetlić w menu nawigacyjnym, ale nie menu:

visibility="SiteMapPathHelper,!*" (SiteMapPathHelper - węzeł jest widoczny w SiteMapPath, * - jest to niewidoczne dla wszystkich innych kontroli!)

np: dostępny

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

Inne opcje:

Rodzaj .......................... Co wpływa na
CanonicalHelper ....... The Canonical HTML Helper
MenuHelper .............. Menu HTML Helper
MetaRobotsHelper .... Pomocnik HTML Meta Robots
SiteMapHelper .......... Helper mapy witryny
SiteMapPathHelper ... The SiteMapPath HTML Helper
SiteMapTitleHelper ... pomocnika Tytuł HTML
XmlSiteMapResult .... wyjście XML Sitemaps punktu końcowego /sitemap.xml

+0

to jest najprostszym rozwiązaniem, ponieważ to robi nie wymaga dodatkowego kodu. –

Powiązane problemy