Возможно ли использовать ASP.NET Sitemap для генерации хлебных крошек?
Я хочу, чтобы на моем сайте ASP.NET была простая строка меню, известная как "хлебные крошки". Я создал Sitemap со всеми необходимыми элементами и зарегистрировался в 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 как { { "/", "Home" }, { "hosting/", "Hosting" }, { "software/", "Software" } .. }
Как я могу использовать запрос к Sitemap вместо него? Или, может быть, что-то еще, не Sitemap, а заранее придуманный.
3 ответа
<asp:SiteMapPath ID="SiteMapPath1" Runat="server" />
Вы можете использовать элемент управления SiteMapPath (должен находиться в категории "Навигация" на панели инструментов). Проверьте эту страницу для учебника.
Просто установите свойство SiteMapProvider для провайдера для карты сайта, которую вы хотите использовать для хлебных крошек, и все будет готово. Я обычно просто помещаю SiteMapPath внутри div и устанавливаю CSS на div для стилизации хлебных крошек.
Хотя надо кое-что высматривать. Если вы подавите какие-либо корневые узлы в карте сайта, они все равно будут отображаться в ваших хлебных крошках. Я столкнулся с этим, пытаясь использовать одну и ту же карту сайта для хлебных крошек и для SiteMapDataSource для дерева, где я не хотел показывать начальный узел.
Удачи!