Панировочные сухари SiteMapPath и SEO-Friendly Routing - PullRequest
3 голосов
/ 24 февраля 2011

Маршрутизация настроена следующим образом:

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, узел Home breadcrumb не появляется.Чего мне не хватает?

ОБНОВЛЕНИЕ

Мне удалось отобразить узел "Home", обновив 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 Ответ

1 голос
/ 30 ноября 2011

Может быть, вам следует изменить файл карты сайта следующим образом:

<?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)

надеюсь, это поможет ...

...