0

私は現在、カスタムサイトマッププロバイダを実装しようとしています。私はそれについていくつかのチュートリアルを読んで、彼らの主導に従った。ASP NET MVCでカスタムSiteMapProviderを使用するには?

MyProject.SecurityにあるMySiteMapProviderという名前のXmlSiteMapProviderのサブクラスを作成しました。

は、私は私のWeb.configファイルのsystem.webセクションに次のコードを追加しました:

<siteMap defaultProvider="MySiteMapProvider" enabled="true"> 
     <providers> 
      <add name="MySiteMapProvider" 
       description="Custom SiteMap provider." 
       type="MyProject.Security.MySiteMapProvider " 
       siteMapFile="Web.sitemap" 
       securityTrimmingEnabled="true" /> 
     </providers> 
    </siteMap> 

しかし、私は私のプロバイダが正しく使用されていないことを確信しています。私は実装から始めることさえできませんでした。私は、次の(擬似)の実装が含まれていることを確認するには:

public override bool IsAccessibleToUser(System.Web.HttpContext context, System.Web.SiteMapNode node) 
    { 
     Debug.Print("Hello World"); 
     throw new Exception();    
     return base.IsAccessibleToUser(context, node); 
    } 
    public override void Initialize(string name, System.Collections.Specialized.NameValueCollection attributes) 
    { 
     Debug.Print("Hello World"); 
     throw new Exception();  
     base.Initialize(name, attributes); 
    } 
    public override SiteMapNode BuildSiteMap() 
    { 
     Debug.Print("Hello World"); 
     throw new Exception();  
     return base.BuildSiteMap(); 
    } 

をしかし、私がしたいと、私はできるだけ多くのサイトを使用してナビゲートすることができ、何の例外は、アップ来ないとデバッグコンソールは、全くのHello Worldを示しません。

重要なことを忘れましたか?

答えて

2

私自身のプロバイダを実装する代わりに、私はMvcSiteMapProviderと一緒に行きました。 実装する必要がある動作のカスタマイズは、動的サイトマップとカスタムSiteMapNodeVisibilityProviderを使用して1日で実現されました。

また、SiteMapProvider全体をSQLベースで実装することも考えられましたが、私はそれを行う必要はないとうれしく思います。

0

コードからSystem.Web.SiteMap.RootNodeを呼び出してみてください。

+0

申し訳ありませんが、私のコードを実行します。しかし、それはルートノードのチェックだけです。そして、この特定のコードが呼び出されたときにのみ実行されます。だから私はさらにどのように行くだろうか? – ckonig

関連する問題