ASP.Net Control Menu se .sitemap souboru

hlasů
1

Nemám spoustu zkušeností s vazbou sitemap soubory ke kontrole menu v ASP.Net a chtěl zjistit, jestli je to možné (bez zakázková vodoinstalace).

Jsem pomocí CSS Friendly Adaptéry získat čistou značky. Mám CSS již připravené k vytvoření horizontální navigaci, kde je horní liště představuje hlavní navigaci a dolní lišta představuje dílčí navigaci.

V podstatě chci převést tento soubor sitemap:

<?xml version=1.0 encoding=utf-8 ?>
<siteMap xmlns=http://schemas.microsoft.com/AspNet/SiteMap-File-1.0 >
    <siteMapNode url=~/Default.aspx title=Home description=>
        <siteMapNode url=~/Page1.aspx title=Page1 description=>
            <siteMapNode url=~/SubPage1_1.aspx title=Sub Page 1.1  description= />
            <siteMapNode url=~/SubPage1_2.aspx title=Sub Page 1.2  description= />
        </siteMapNode>
        <siteMapNode url=~/Page2.aspx title=Page2  description=>
            <siteMapNode url=~/SubPage2_1.aspx title=Sub Page 2.1  description= />
            <siteMapNode url=~/SubPage2_2.aspx title=Sub Page 2.2  description= />
        </siteMapNode>
    </siteMapNode>
</siteMap>

Do tohoto značení:

<div class=nav >
    <ul class=fixed>
      <li><a href=Page1.aspx class=active>Page 1</a></li>
      <li><a href=Page2.aspx>Page 2</a></li>
    </ul>
</div><!-- end .nav -->

<div class=subnav >
    <ul class=fixed>
      <li><a href=SubPage1_1.aspx class=active>Page 1.1</a></li>
      <li><a href=SubPage1_2.aspx>Page 1.2</a></li>
    </ul>
</div><!-- end .subnav -->

Tam, kde je sub-navigační vázána na podřízené uzly hlavním navigačním uzlu v sitemap.

Je to špatně ode mě očekávat, že to bude jednoduché)

Položena 25/11/2009 v 04:53
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
1

Tak to dopadá, že řešení je ve skutečnosti velmi jednoduché.

Použitím dvou SiteMapDataSourceControls a nastavení druhá je StartingNodeOffset = 1, pak můžete efektivně dosáhnout dvěma vrstvami navigační přístup pomocí dvou opakovačů.

<ul>
    <asp:Repeater ID="rptMainNavigation" runat="server" DataSourceID="SiteMapDataSourceMainNavigation">
        <ItemTemplate>
            <li><a href="<%# ((SiteMapNode)Container.DataItem).Url %>"><%# ((SiteMapNode)Container.DataItem).Title %></a></li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

<ul>
    <asp:Repeater ID="rptSubNavigation" runat="server" DataSourceID="SiteMapDataSourceSubNavigation">
        <ItemTemplate>
            <li><a href="<%# ((SiteMapNode)Container.DataItem).Url %>"><%# ((SiteMapNode)Container.DataItem).Title %></a></li>
        </ItemTemplate>
    </asp:Repeater>
</ul>

<asp:SiteMapDataSource ID="SiteMapDataSourceMainNavigation" runat="server" ShowStartingNode="False" />
<asp:SiteMapDataSource ID="SiteMapDataSourceSubNavigation" runat="server" ShowStartingNode="False" StartingNodeOffset="1" />
Odpovězeno 25/11/2009 v 15:46
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more