2011-01-12 80 views
0

我正在開發一個網站,在那裏我使用web.sitemap展示如此的麪包屑。ASP.NET SiteMap

我面對的問題基本上是,我有一些硬頁面和軟頁面,現在只在數據庫中提到,當我點擊硬頁面時,它顯示完整的麪包屑也包括包含它的主頁面,但是當我喜歡這一聯繫是在數據庫和我已表明它一個特定的頁面上用於每一頁的數據不包括主要page.for例如

這是

home > main menu > hard page 

硬頁面,但是當我點擊在數據庫中的軟頁面上它

home > soft page 

我想使用c#動態設置它是否有誰知道如何解決?

回答

3

一個例子如何推出自己的XmlSiteMapProvider與定製邏輯:

public class MyXmlSiteMapProvider : XmlSiteMapProvider 
    { 
     public override SiteMapNode FindSiteMapNode(string rawUrl) 
     { 
      SiteMapNode node = base.FindSiteMapNode(rawUrl); 
      if (node != null) 
      { 
       var page = HttpContext.Current.Handler as Page; 
       if (page != null) 
       { 
        page.Title = node.Title; 
       } 
       var newNode = node.Clone(true); 
       newNode.Url = rawUrl; 
       return newNode; 
      } 
      else 
      { 
       return null; 
      } 
     } 

     public override bool IsAccessibleToUser(HttpContext context, SiteMapNode node) 
     { 
      if (node.Roles.OfType<string>().Any(r => String.Equals(r, "*", StringComparison.Ordinal) || context.User.IsInRole(r))) 
      { 
       return true; 
      } 
      else 
      { 
       throw new InsufficientRightsException(); 
      } 
     } 
    } 

安裝到Web.config文件:

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <system.web> 
     <siteMap defaultProvider="MyXmlSiteMapProvider" enabled="true"> 
      <providers> 
       <clear /> 
       <add name="MyXmlSiteMapProvider" type="MyXmlSiteMapProvider" siteMapFile="Web.sitemap" securityTrimmingEnabled="true" /> 
      </providers> 
     </siteMap> 
    </system.web> 
</configuration> 

使用標準ASP.NET麪包屑控制:

<asp:SiteMapPath runat="server" RenderCurrentNodeAsLink="true" SkipLinkText="" />