1

MVCSiteMapプロバイダーの最新のNugetパッケージを使用しています。私たちは、サイト内のノードを定義するコードベースの属性を多用しています。

例えば[MvcSiteMapNode(Title = "Examination Types", ParentKey = "LookupTable", Key = "ExaminationTypeIndex")]

カスタム可視性プロバイダーを利用して、ここのようにサイトマップからノードを非表示にします

しかし、コードベースのノードを使用してノードの可視性属性を指定できないようですか?とにかくそれをすることはありますか?カスタムの可視性プロバイダーのみを指定でき、むしろvisible属性を使用します。

4

2 に答える 2

2

可視性はカスタム属性であるため、[MvcSiteMapNodeAttribute]と組み合わせて使用​​するには、[属性]フィールドに指定する必要があります。唯一注意が必要なのは、.NET属性がディクショナリタイプをサポートしていないことです。そのため、属性をエスケープされたJSON文字列として指定する必要があります。

[MvcSiteMapNode(Title = "Examination Types", ParentKey = "LookupTable", Key = "ExaminationTypeIndex", Attributes = @"{ ""visibility"": ""SiteMapPathHelper,!*"" }")]

注:複数のカスタム属性を指定する必要がある場合は、それらをコンマで区切ります。

Attributes = @"{ ""visibility"": ""SiteMapPathHelper,!*"", ""myCustomAttribute"": true }"
于 2014-11-12T15:46:21.173 に答える
1

これを行うために私が見つけた唯一の方法は、いくつかのカスタム可視性プロバイダーを作成することです。たとえば、可視性フラグが「true」および「false」である可能性がある場合は、常にfalseを返す可視性プロバイダーを作成するだけです。コードで作成するサイトマップノードで、そのプロバイダーを指定します。

すべての属性でこれを実行したくない場合は、適切な可視性プロバイダーを設定するMvcSiteMapNodeAttributeから継承する新しいクラスを作成し、必要に応じてそれを使用します。

于 2012-12-09T19:36:51.387 に答える