4

サイト メニューからノードを非表示にしようとしていますが、パンくずリストには表示されます

ここのチュートリアルに従っています: https://github.com/maartenba/MvcSiteMapProvider/wiki/Advanced-Node-Visibility

<mvcSiteMapNode title="Create Customer" controller="Customer" action="Create" area="Home" clickable="false" visibility="SiteMapPathHelper,!*"/>  

上記は機能していないようです。サイトのメニューとブレッドクラムの両方に表示されます。

4

3 に答える 3

3

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

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

上記のリンクから設定できるいくつかの設定:

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

アプリ設定を追加したら、ブレッドクラムに表示するがメニューには表示しない任意のノードに次を追加します。

visibility="SiteMapPathHelper,!*"(SiteMapPathHelper - ノードはサイトマップ パスで表示されます。!* - 他のすべてのコントロールでは表示されません)

例えば:

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

利用可能なその他のオプション:

タイプ.........................影響するもの
CanonicalHelper.... Canonical HTML Helper
MenuHelper........ .......メニュー HTML ヘルパー
MetaRobotsHelper....メタ ロボット HTML ヘルパー
SiteMapHelper........SiteMap HTML ヘルパー
SiteMapPathHelper...SiteMapPath HTML ヘルパー
SiteMapTitleHelper...タイトルHTML Helper
XmlSiteMapResult.... /sitemap.xml エンドポイントのサイトマップ XML 出力

于 2014-11-23T23:31:53.700 に答える
3

OnlyBreadCrumbMVCSiteMapNodeAttribute を作成しました。属性が必要なコードを装飾します

public class OnlyBreadCrumbMvcSiteMapNodeAttribute : MvcSiteMapNodeAttribute
{
    public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey)
    {
        Title = title;
        ParentKey = parentKey;
        VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName;
    }
    public OnlyBreadCrumbMvcSiteMapNodeAttribute(string title, string parentKey, string key)
    {
        Title = title;
        Key = key;
        ParentKey = parentKey;
        VisibilityProvider = typeof(BreadCrumbOnlyVisibilityProvider).AssemblyQualifiedName;
    }
}

可視性プロバイダーもある

public class BreadCrumbOnlyVisibilityProvider : ISiteMapNodeVisibilityProvider
{
    public bool IsVisible(SiteMapNode node, HttpContext context, IDictionary<string, object> sourceMetadata)
    {
        if (sourceMetadata["HtmlHelper"] == null || (string)sourceMetadata["HtmlHelper"] == "MvcSiteMapProvider.Web.Html.SiteMapPathHelper")
        {
            return true;
        }
        return false;
    }
}

のように使う

    [OnlyBreadCrumbMvcSiteMapNode("Upload Documents", "AssetDocuments")]
    public virtual ActionResult FileUpload(int assetId)

Upload Documents はブレッドクラムのタイトルになります。AssetDocuments は親キーです

3 番目のパラメータを渡すと、ブレッドクラム ノード自体のキーが設定されます

于 2013-03-07T10:39:27.790 に答える
0

これをweb.configに追加します

<appSettings>
  <add key="MvcSiteMapProvider_DefaultSiteMapNodeVisibiltyProvider" value="MvcSiteMapProvider.FilteredSiteMapNodeVisibilityProvider, MvcSiteMapProvider"/>
<appSettings>
于 2014-04-24T11:33:49.890 に答える