2009-02-16 35 views
3

我想讓我的ASP.NET網站擁有簡單的菜單字符串aka Breadcrumbs。 我已經創建了具有所有必需元素的Sitemap並將其註冊到Web.config中。例如:是否有可能使用ASP.NET Sitemap來生成麪包屑?

<siteMap> 
    <siteMapNode url="Default.aspx" title="Home" > 
     <siteMapNode url="hosting/Default.aspx" title="Hosting" /> 
     <siteMapNode url="software/Default.aspx" title="Software"> 
      <siteMapNode url="firefox/Default.aspx" title="Firefox"> 
       <siteMapNode url="Download.aspx" title="Download" /> 
       <siteMapNode url="Support.aspx" title="Support" /> 
      </siteMapNode> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

並創建了一個放置在母版頁上的控件。這是菜單生成代碼:

protected void Control_Load(Object sender, EventArgs e) 
{ 
    string path = String.Empty; 
    StringCollection list = new StringCollection(); 

    foreach (string str in Request.Url.Segments) 
    { 
     path += str; 
     string link = String.Format("<a href=\"{0}://{1}{2}\">{3}</a>", Request.Url.Scheme, Request.Url.Authority, path, this.names[str]); 
     list.Add(link); 
    } 

    foreach (string str in list) 
    { 
     menu += String.Concat(str, SeparatorLine); 
    } 
    menu = menu.Remove(menu.LastIndexOf(SeparatorLine)); 
} 

,但它使用像一個StringDictionary {{ 「/」, 「家」},{ 「主機/」, 「託管」},{ 「軟件/」, 「軟件」 }}}

如何使用查詢來代替Sitemap?或者也許別的東西,不是Sitemap,但事先發明瞭。

回答

1

的SiteMapProvider屬性剛剛成立的提供者要使用的麪包屑的網站地圖,你會被設定。我通常只需將SiteMapPath放入div中,並在div上設置CSS以設置麪包屑的樣式。

雖然有一個問題需要注意。如果您禁止站點地圖中的任何根節點,它們仍會顯示在您的麪包屑中。我遇到過這種情況,試圖對面包屑使用相同的站點地圖,對於我不希望顯示起始節點的樹視圖使用SiteMapDataSource。

祝你好運!

+1

@Tim:這裏有一個如何隱藏「OnItemCreated」處理程序中呈現的根節點的例子:http://johanleino.wordpress.com/2009/01/11/hiding-the-rootnode-in-a -breadcrumb-控制網站地圖路徑/。基本上,如果節點恰好是根節點,它將節點的「Visible」屬性設置爲「false」。 – Groo 2010-07-16 11:11:35