2011-02-24 90 views
3

我有路由设置如下:面包屑的SiteMapPath和搜索引擎友好的路由

void RegisterRoutes(RouteCollection routes) 
{ 
    routes.MapPageRoute("", "Home", "~/Default.aspx"); 
    ...... 
} 

我使用SiteMapPath控件实现面包屑:

<asp:SiteMapPath ID="SiteMapPath1" CssClass="breadCrumbs" runat="server"> 
</asp:SiteMapPath> 

Web.sitemap中设置如下:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="Home" title="Home" description="Home">  
     <siteMapNode url="~/About" title="About" description="About"> 
      <siteMapNode url="~/History" title="History" 
       description="History" />  
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

我的问题是,当我导航到mysite.com而不是mysite.com/default.aspx时,主页breadcru MB节点不会出现。我错过了什么?

UPDATE

我设法让“家”节点通过更新Web.sitemap中显示如下:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="Home" title="Home" description="Home"> 
     <siteMapNode url="~/Default.aspx" title="" description="" /> 
     <siteMapNode url="~/About" title="About" description="About"> 
      <siteMapNode url="~/History" title="History" 
       description="History" /> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

剩下的唯一问题是,路径分隔符仍显示在mysite.com的主页

有没有一种方法可以在主页上以编程方式使分隔符不可见? SiteMapPath控件本身位于母版页中。

enter image description here

回答

1

也许你应该改变你的网站地图文件如下:

<?xml version="1.0" encoding="utf-8" ?> 
<siteMap xmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0" > 
    <siteMapNode url="~/" title="Global Site Name or Welcome Message" description="Home"> 
     <siteMapNode url="~/Home" title="Home" description="" /> 
     <siteMapNode url="~/About" title="About" description="About"> 
      <siteMapNode url="~/History" title="History" 
       description="History" /> 
     </siteMapNode> 
    </siteMapNode> 
</siteMap> 

,并从的SiteMapDataSource应设置ShowStartingNode="false",我认为这既解决了你的问题在一次...

注意:当然这将需要您在global.asax文件(VB)中进行此更改:

RouteTable.Routes.MapPageRoute("Home0", "", "~/Default.aspx", True) 
RouteTable.Routes.MapPageRoute("Home1", "Home", "~/Default.aspx", True) 

希望这有助于...

+0

请给这个试试看,谢谢:) – IrishChieftain 2011-12-01 14:48:44