ブレッドクラムを生成するために、ASP.NETのサイトマップを使用し、それは可能ですか?

StackOverflow https://stackoverflow.com/questions/554615

質問

私は私のASP.NETサイトは、ブレッドクラム別名簡単なメニューの文字列を持っていると思います。 私は必要なすべての要素を持つサイトマップを作成し、Web.configファイルに登録されています。たとえばます:

<siteMap>
    <siteMapNode url="Default.aspx" title="Home" >
        <siteMapNode url="hosting/Default.aspx" title="Hosting" />
        <siteMapNode url="software/Default.aspx" title="Software">
            <siteMapNode url="firefox/Default.aspx" title="Firefox">
                <siteMapNode url="Download.aspx" title="Download" />
                <siteMapNode url="Support.aspx" title="Support" />
            </siteMapNode>
        </siteMapNode>
    </siteMapNode>
</siteMap>

そして、マスターページに配置されたコントロールを作成しました。ここでは、メニュー生成コードです:

protected void Control_Load(Object sender, EventArgs e)
{
    string path = String.Empty;
    StringCollection list = new StringCollection();

    foreach (string str in Request.Url.Segments)
    {
        path += str;
        string link = String.Format("<a href=\"{0}://{1}{2}\">{3}</a>", Request.Url.Scheme, Request.Url.Authority, path, this.names[str]);
        list.Add(link);
    }

    foreach (string str in list)
    {
        menu += String.Concat(str, SeparatorLine);
    }
    menu = menu.Remove(menu.LastIndexOf(SeparatorLine));
}

しかし、それは次のように{{ "/"、 "ホーム"}、{ "ホスティング/"、} "ホスティング"、{ "ソフトウェア/"、 "ソフトウェア"} ..}

StringDictionaryを使用しています

どのように私の代わりにそれのサイトマップへのクエリを使用することができますか?それとも何か他に、サイトマップではないが、事前に発明されています。

役に立ちましたか?

解決

ASP.NET SiteMapPathはコントロールする

<asp:SiteMapPath ID="SiteMapPath1" Runat="server" />

他のヒント

は、ちょうどあなたがパンくずに使用するサイトマップのプロバイダにSiteMapProviderプロパティを設定し、あなたが設定されます。私は通常ちょうどdivの内側にSiteMapPathはを配置し、パン粉のスタイルをdiv要素にCSSを設定します。

しかし外を見るための一つの落とし穴。あなたはサイトマップ内の任意のルートノードを抑制した場合、彼らはまだあなたのパンくずリストに表示されます。私はパン粉のために、私は開始ノードを表示しないように望んでいたツリービューのためのSiteMapDataSourceに同じサイトマップを使用しようとすることで、このに遭遇しました。

グッドラック!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top