2011-01-12 33 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="" />