2009-11-11 53 views
3

我試圖寫我的第一個自己的SiteMapProvider子類。它意味着使用一堆不同的數據庫查找動態填充,就像我在網上找到的所有示例一樣。ASP.NET:自定義動態填充的網站地圖(SiteMapProvider)

但是,有一大堆事情對我來說很不清楚。這裏是我的兩個首要問題:

  • 爲什麼在幾乎每個人的項目,而不是SiteMapProvider使用StaticSiteMapProvider?由於該類包含名稱「靜態」,所以我得到的印象是它不像我想要的那樣完美,動態。
  • 有人可以提供一個超簡約的SiteMapProvider子類,它只使用靜態數據填充地圖,即沒有數據庫訪問等。
+0

你有鏈接到你已經閱讀的資源和例子嗎? – 2009-11-11 17:01:39

回答

3

SiteMapProvider可以是tottaly動態的。例如,它可以爲節點進行動態查找。與StaticSiteMapProvider相比,您應該知道整個結構。所以這爲你決定選擇什麼。

你可以看看XmlSiteMapProvider,這是「靜態」地圖提供者的好例子。

public class CoolMapProvider : StaticSiteMapProvider 
{ 
    public override SiteMapNode BuildSiteMap() 
    { 
     var root = new SiteMapNode(this, "test", "~/test.aspx"); 
     base.AddNode(root, null); 

     base.AddNode(new SiteMapNode(this, "test-child", "~/test_child.aspx"), root); 

     return root; 
    } 
} 

我沒有檢查過,但應該工作。

+0

這一切看起來都非常好,但你能給我舉個例子說明如何將子節點添加到「測試」中嗎? – 2009-11-11 17:08:27

+0

FWIW,我不得不重寫'GetRootDoneCore'以使其工作。 – 2009-11-11 17:15:01

+0

答案更新了,你必須使用'base.AddNode'。回顧'GetRootDoneCore',我做了這個年齡段,所以不記得一切,抱歉.. – 2009-11-12 14:33:17