Могу ли я пропустить узлы в 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, чтобы удалить класс узлов).

Другие вопросы по тегам