3

次のようにルーティングを設定しました。

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 / default.aspxではなくmysite.comに移動すると、ホームブレッドクラムノードが表示されないことです。私は何が欠けていますか?

アップデート

次のように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コントロール自体はマスターページにあります。

ここに画像の説明を入力してください

4

1 に答える 1

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)

お役に立てれば...

于 2011-11-30T08:26:25.390 に答える