ブレッドクラムを生成するために、ASP.NETのサイトマップを使用し、それは可能ですか?
-
23-08-2019 - |
質問
私は私の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:SiteMapPath ID="SiteMapPath1" Runat="server" />
他のヒント
あなたは SiteMapPathはコントロール(ツールボックスのナビゲーションカテゴリにする必要があります)。チュートリアルのこのページを確認します。
は、ちょうどあなたがパンくずに使用するサイトマップのプロバイダにSiteMapProviderプロパティを設定し、あなたが設定されます。私は通常ちょうどdivの内側にSiteMapPathはを配置し、パン粉のスタイルをdiv要素にCSSを設定します。
しかし外を見るための一つの落とし穴。あなたはサイトマップ内の任意のルートノードを抑制した場合、彼らはまだあなたのパンくずリストに表示されます。私はパン粉のために、私は開始ノードを表示しないように望んでいたツリービューのためのSiteMapDataSourceに同じサイトマップを使用しようとすることで、このに遭遇しました。
グッドラック!
所属していません StackOverflow