0

我目前正在嘗試實現一個自定義SiteMap提供程序。我已經閱讀了幾篇關於它的教程,並且遵循了他們的主導。如何在ASP NET MVC中使用自定義SiteMapProvider?

我已經創建了一個名爲MySiteMapProvider的XmlSiteMapProvider的子類,它位於MyProject.Security中。

我已經添加下面的代碼我的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世界的。

我忘了重要的事嗎?

回答

2

我沒有執行自己的提供程序,而是去了MvcSiteMapProvider。 我需要實現的行爲的定製在一天內通過動態站點地圖和自定義SiteMapNodeVisibilityProvider實現。

我也考慮過實施整個SiteMapProvider,可能在SQL的基礎上,我很高興我不必這樣做。

0

嘗試從代碼中調用System.Web.SiteMap.RootNode

+0

好吧,執行我的代碼。但它只對根節點進行檢查。只有在調用這段特定的代碼時纔會執行它。那麼我將如何進一步? – ckonig 2012-04-18 11:23:38

相關問題