3

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>

Masterpage に配置されたコントロールを作成しました。メニュー生成コードは次のとおりです。

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));
}

しかし、{ { "/", "Home" }, { "hosting/", "Hosting" }, { "software/", "Software" } .. } のような StringDictionary を使用します。

代わりにサイトマップへのクエリを使用するにはどうすればよいですか? または、サイトマップではなく、事前に発明されたものかもしれません。

4

3 に答える 3

9

ASP.NET SiteMapPath コントロール

<asp:SiteMapPath ID="SiteMapPath1" Runat="server" />
于 2009-02-16T21:26:37.750 に答える
5

SiteMapPathコントロールを使用できます(ツールボックスのナビゲーション カテゴリにある必要があります)。チュートリアルについては、このページを確認してください。

于 2009-02-16T21:26:26.643 に答える
1

ブレッドクラムに使用するサイトマップのプロバイダーにSiteMapProviderプロパティを設定するだけで、設定されます。私は通常、SiteMapPathをdiv内に配置し、CSSをdivに設定してブレッドクラムのスタイルを設定します。

ただし、注意が必要な点が1つあります。サイトマップでルートノードを非表示にした場合でも、それらはブレッドクラムに表示されます。ブレッドクラムと、開始ノードを表示したくないツリービューのSiteMapDataSourceに同じサイトマップを使用しようとして、これに遭遇しました。

幸運を!

于 2009-05-18T12:03:29.317 に答える