2012-08-17 3 views
8

プロジェクトでASP.NET MVC SiteMapプロバイダを使用していて、うまく動作しています。しかし、私はメニュー項目を隠す方法を理解しようとするのに苦労しています。グローバルナビゲーションに表示しないようにするメニュー項目は、私の「サイトマップ」ページです。今私はVisibilityProviderという名前のものがmvcSiteMapNodeで利用可能であることを知っていますが、それを動作させる方法を理解できないようです。ASP.NET MVC SiteMapプロバイダ - 実際のメニューで単一アイテムを非表示にする方法

答えて

5

まず、このwikiページをお読みください:Creating a Custom SiteMapNodeVisibilityProvider。次に、あなたのサイトマップページを指す特定のノードのために、それをこのように宣言します(上記のリンクWikiページに示されている)IsVisibleメソッドを実装する際に今

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

を、あなたはこれを行うことができます。

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

利用可能なノードとオプションを非表示にする方法を説明しています。あなたが追加した後

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

:あなたは上記のリンクから設定できるノードに

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

いくつかの設定を非表示にする方法については、このガイドを使用する必要があります

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

アプリの設定で、ブレッドクラムに表示したいメニューに次のコードを追加します。

visibility="SiteMapPathHelper,!*"(SiteMapPathHelper - ノードは、SiteMapPathはで表示されている* - それは他のすべてのコントロールのために目に見えないです!)

例:利用可能

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

その他のオプション:

タイプ .......................... 影響内容
CanonicalHelper ....... Canonical HTML Helper
メニューヘルパー..............メニューHTMLヘルパー
メタロボットのヘルパー...メタロボットのHTMLヘルパー
SiteMapHelper .......... SiteMap HTMLヘルパー
SiteMapPathHelper ... SiteMapPathはHTMLヘルパー
SiteMapTitleHelper ...タイトルHTMLヘルパー
XmlSiteMapResultそれがないので.... /sitemap.xmlエンドポイント

+0

のサイトマップのXML出力は、これは、最も簡単な解決策であります追加のコードは必要ありません。 –