Могу ли я пропустить узлы в ASP.NET Menu Control? - PullRequest
2 голосов
/ 24 февраля 2009

У меня есть 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 ]

6 голосов
/ 24 февраля 2009

Если вы используете SiteMapsDataSource, вы можете пропустить корневой узел, установив для свойства ShowStartingNode значение false.

1 голос
/ 24 февраля 2009

Если вы еще не используете SiteMapDataSource для заполнения Menu, вы можете сделать это и установить для его свойства ShowStartingNode значение false (и, как отмечено в комментарии выше, уменьшить значение StaticDisplayLevels на 1, так как вы удаляете уровень) вот так:

<asp:SiteMapDataSource ID="MenuSource" runat="server" ShowStartingNode="false" />

Конечно, это работает только для корневого узла. Чтобы пропустить другие узлы или целые уровни узлов, необходимо заполнить исходный Xml перед заполнением Menu (например, использовать некоторый xslt для удаления класса узлов).

...