Есть ли способ программно установить текущий узел элемента управления SiteMapPath? - PullRequest
1 голос
/ 26 марта 2009

У моего сайта есть несколько страниц, которые указывают на одну и ту же дочернюю страницу. Я использую карту сайта xml, которая не позволяет мне дублировать SiteMapNode с тем же URL-адресом. Моя идея заключалась в том, чтобы дать моему элементу SiteMapPath родительский узел для заполнения, а затем добавить SiteMapNode текущей страницы.

Кто-нибудь еще должен был сделать что-то подобное? Я посмотрел на эту статью http://msdn.microsoft.com/en-us/library/ms178425.aspx, в которой описано, как «программно изменить узлы карты сайта в памяти», но они включают в себя SiteMapNode в файле, а затем просто модифицируют этот узел путем проверки строки запроса.

Мой узел никогда не существует, или, если это так, мне нужно скопировать его на правильный родительский элемент, чтобы он мог отобразить правильный путь. Для визуала:

Home
--My Page
----Page A
----Page B
----Page C
--My Other Page
----Page A
----Page D
--YAPage
----Page B
----Page C

Некоторые примеры того, что я хотел бы увидеть:

Home > My Page > Page A
Home > My Other Page > Page A
Home > My Page > Page B
Home > YAPage > Page B

1 Ответ

1 голос
/ 27 марта 2009

Похоже, что это решит проблему:

http://www.codeproject.com/KB/aspnet/ABetterSiteMapResolve.aspx http://netpl.blogspot.com/2008/04/sitemapresolve-and-dynamic-site-map.html

Для динамических карт сайта: http://www.codeproject.com/KB/aspnet/dynamicsitemap.aspx

С несколькими провайдерами вам нужно будет использовать это вместо этого, чтобы прикрепить событие SiteMapResolve: (Если ваше событие не запускается, скорее всего, у вас не установлен правильный провайдер.)

SiteMap.Providers [currentProvider] .SiteMapResolve + = новый SiteMapResolveEventHandler (Provider_SiteMapResolve);

...