0

MvcSiteMapProviderASP.NET MVC アプリケーションでブレッドクラムを作成するために使用しています。いくつかの子ノードを作成したいいくつかの動的リソースがあります。これらのノードのいくつかは、ブレッドクラムに表示したいが、クリックできないようにしたい。

静的リソースの場合clickable="false"、XML サイトマップ ドキュメントで指定できます。これらのノードは表示されますが、ハイパーリンクにはなりません。DynamicNode動的ノード プロバイダー クラスから返された に設定する同等のプロパティが見つかりません。

動的な「クリックできない」ノードを追加することはできますか?

4

2 に答える 2

1

DynamicNodeクラスClickableから継承しないため、nプロパティはありません。MvcSiteMapNode

を振り返るMvcSiteMapNodeと、 の実装がプロパティClickableによってサポートされていることがわかります。Attributes

public bool Clickable
{
    get
    {
        return ((this["clickable"] == null) || bool.Parse(this["clickable"]));
    }
    set
    {
        this["clickable"] = value.ToString();
    }
}

DynamicNodeクラスは独自のプロパティを公開します。このプロパティは、動的ノードが解析されるときにインスタンスにAttributesコピーされます。MvcSiteMapNodeしたがって、プロパティは次のコードを使用して設定できます。

var node = new DynamicNode();

node.Attributes["clickable"] = "false";
于 2012-12-20T09:52:15.407 に答える
1

v4 では、動的ノードに Clickable プロパティが追加されました。プロパティが Attributes ディクショナリによってサポートされなくなったため、属性をクリック可能に設定するとエラーが発生するようになりました。

var node = new DynamicNode();

node.Clickable = false;
于 2014-02-22T11:19:31.850 に答える