Могу ли я пропустить узлы в ASP.NET Menu Control?
У меня есть web.sitemap, как это:
<siteMapNode url="~/Default.aspx" title="Home" description="" >
<siteMapNode title="Node 1" description="">
<siteMapNode url="" title="Node 1-1" description="" />
<siteMapNode url="" title="Node 1-2" description="" />
</siteMapNode>
<siteMapNode title="Node 2" description="">
<siteMapNode url="" title="Node 2-1" description="" />
<siteMapNode url="" title="Node 2-2" description="" />
</siteMapNode>
</siteMapNode>
Если я использую элемент управления меню ASP.NET (с StaticDisplayLevels=2), я получаю это:
| Главная | Узел 1 | Узел 2 |
Есть ли свойство для пропуска "Домой" и получения этого меню (из этой карты сайта):
| Узел 1 | Узел 2 |
?
2 ответа
Если вы используете SiteMapsDataSource, вы можете пропустить корневой узел, установив для свойства ShowStartingNode значение false.
Если вы еще не используете SiteMapDataSource
заселить Menu
Вы можете сделать это и установить его ShowStartingNode
собственность на false
(и, как отмечено в комментарии выше, уменьшить StaticDisplayLevels
на 1, так как вы удаляете уровень) вот так:
<asp:SiteMapDataSource ID="MenuSource" runat="server" ShowStartingNode="false" />
Конечно, это работает только для корневого узла. Чтобы пропустить другие узлы или целые уровни узлов, необходимо заполнить исходный Xml перед заполнением Menu
(например, используйте некоторый xslt, чтобы удалить класс узлов).