2012-04-21 7 views
0

私は、SiteMapファイルのmvcSiteMapNodeにノードプロバイダ名を指定して動的ノードプロバイダを実装しましたが、正常に動作します。しかし、ユーザーが認証されると、動的ノードを追加するだけです。その理由は、user.Identityでノードをフィルタリングできるように、HttpContext.User.Identityにアクセスしたいからです。ダイナミックノードプロバイダにノードを追加する方法は?

したがって、私はSiteMapファイルのmvcSiteMapNodeを削除しました。代わりに、(ユーザーが認証されると)ActionメソッドでGetDynamicNodeCollectionメソッドを呼び出していて、ノードがユーザーによってフィルタリングされています。これも期待どおりに機能しています。

私の質問:ノードを取得したら、それらをSiteMapNodeCollectionに追加して、ActionResultから返されるビューに表示する方法を教えてください。

答えて

1

これはおそらく、SiteMapNodeVisibilityプロバイダの仕事であり、DynamicNodeProviderの仕事ではありません。

理由は、ノードのキャッシュです。

+0

正しいプロバイダが使用されているかどうかに加えて、主な問題は、サイトマップが初めてアクセスされたときにプロバイダが起動されることです。つまり、ノードの生成とレンダリングのタイミングを制御する方法がありません。 GITHUBフォーラムでの回答と同様に、ドキュメンテーションは事実上存在しません。私はアプリケーションが非常に限られているので、MvcSiteMapProviderを削除する時点にいます。 – Greg

関連する問題