2012-08-17 22 views
8

Bir projede ASP.NET MVC SiteMap sağlayıcısı kullanıyorum ve harika çalışıyor. Ancak bir menü öğesini nasıl gizleyeceğimi anlamaya çalışırken zor bir zaman geçiriyorum. Global navigasyonda görüntülemek istemediğim menü maddesi "Site Haritası" sayfam. Şimdi mvcSiteMapNode üzerinde VisibilityProvider bana verilen bir şey olduğunu biliyorum - ama nasıl çalışacağını anlayamıyorum.ASP.NET MVC SiteMap sağlayıcısı - Gerçek menüdeki tek öğeleri nasıl gizlerim?

cevap

5

İlk olarak, bu viki sayfasını okumanızı öneririm: Creating a Custom SiteMapNodeVisibilityProvider. Ardından Site Haritası sayfasına işaret belirli düğüm için, bu şekilde beyan: (yukarıda bağlantısı wiki sayfasından gösterilmiştir) IsVisible yöntemi uygularken Şimdi

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

, bunu yapabilirsiniz:

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

Cevabımdan alınan düğümlerin ve seçeneklerin nasıl saklanacağını açıklamak için buradan aldım. Eğer ekledikten sonra

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

: Sen yukarıdaki linkten ayarlayabilirsiniz bir düğüm

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

Bazı ayarları gizlemek için nasıl bu kılavuzu kullanmalısınız

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

uygulama ayarlarında, aşağıdakileri görüntülemek istediğiniz herhangi bir düğüme aşağıdakini ekleyin, ancak menüyü değil:

visibility="SiteMapPathHelper,!*" (SiteMapPathHelper - düğümü *, SiteMapPath görülebilir - tüm diğer kontroller için görünmez!)

örn:

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

Diğer seçenekler:

Tipi .......................... Ne Etkiliyor
CanonicalHelper ....... Canonical HTML Yardımcısı
MenuHelper .............. Menü HTML Yardımcısı
MetaRobotsHelper .... Meta Robots HTML Yardımcısı
SiteMapHelper .......... SiteMap HTML Yardımcısı
SiteMapPathHelper ... SiteMapPath HTML Yardımcısı
SiteMapTitleHelper ... Başlık HTML Yardımcısı
XmlSiteMapResult .... /sitemap.xml son nokta

+0

Bu en kolay çözümdür ait site haritaları XML çıktı, öyle çünkü ek kod gerektirmez. –