2009-02-20 53 views
2

我覺得在ASP.NET中使用Sitemap不利於CSS。我在哪裏設置一個菜單,使其看起來像CSS一樣。 mu ul和li在哪裏?ASP.NET菜單和CSS?

...初學者,所以請原諒我,如果有我的鼻子下。

+0

如果你要非常精細地控制生成的HTML你最好有一箇中繼器。我已經爲我的答案添加了示例。 – 2009-02-20 10:23:08

回答

1

要完全控制菜單,您可以使用Repeater並將其綁定到Web.SiteMap。

<asp:Repeater ID="MenuRepeater" DataSourceID="SiteMapDataSource1" runat="server"> 
    <ItemTemplate> 
    <li> 
     <a href='<%#Eval("url")%>'><%#Eval("Title")%></a> 
    </li> 
    </ItemTemplate> 
</asp:Repeater> 

如果您正在尋找CSS下拉菜單,那麼只需添加一個嵌套的Repeater即可。

<asp:Repeater ID="MenuRepeater" DataSourceID="SiteMapDataSource1" runat="server" EnableViewState="false"> 
    <ItemTemplate> 
    <li> 
     <a href='<%#Eval("url")%>'><%#Eval("Title")%></a> 
     <ul> 
     <asp:Repeater ID="DropDownRepeater" DataSource='<%#Container.DataItem.ChildNodes()%>' runat="server"> 
      <ItemTemplate> 
      <li> 
       <a href='<%#Eval("url")%>'><%#Eval("Title")%></a> 
      </li> 
      </ItemTemplate> 
     </asp:Repeater> 
     </ul> 
    </li> 
    </ItemTemplate> 
</asp:Repeater> 

所以你會得到你想要的CSS菜單,仍然使用你的Web.SiteMap。

+0

雖然只會給你兩個級別。最好寫一些遞歸函數。 – Craig 2009-02-20 10:24:28

3

爲什麼不只是使用一個CSS菜單與ul的和李的? ASP.NET中沒有什麼說你必須使用Web控件,正常的HTML也可以(也許更好)工作。

+0

我有點擔心,如果我只使用CSS,那麼我會錯過SiteMap功能的簡單 - 顯然我不是。 我想我會用CSS來試試它。 – RocketGoal 2009-02-20 10:17:49

+0

WebForm控件的問題通常是它們很簡單,很難做簡單的事情。徹底沮喪做複雜的事情。 – Craig 2009-02-20 10:21:59

0

您可以將SiteMapDataSource與Repeater tu組合,產生標準的<ul><li>菜單列表。您甚至可以將自己的屬性添加到web.sitemap文件中,例如指定菜單項的圖像...

0

teknohippy的建議是偉大的!

然而,線

<asp:Repeater ID="DropDownRepeater" DataSource='<%#Container.DataItem.ChildNodes()%>' runat="server"> 

不正確。它需要是

<asp:Repeater ID="Repeater1" runat="server" DataSource='<%# ((SiteMapNode) Container.DataItem).ChildNodes %>'> 

爲了工作。

細節在這個優秀的教程可用:

http://msdn.microsoft.com/en-us/library/aa581781.aspx