2009-02-24 2 views
2

У меня есть Web.sitemap вроде этого:Могу ли я пропускать узлы в элементе управления ASP.NET?

<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 |

Есть ли свойство для пропуска "Home" и получить это меню (с этого сайта):

| Узел 1 | Узел 2 |

?

ответ

6

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

+0

Отлично, спасибо. Свойство находится в DataSource, а не в элементе управления меню, где я смотрел – juan

+0

Мне также пришлось переключать StaticDisplayLevels с 2 на 1, поскольку начальный узел пока не отображается – juan

1

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

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

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

Смежные вопросы