看看jQuery的快魚插件
http://users.tpg.com.au/j_birch/plugins/superfish - 去示例和導航欄樣式
這通過建立一個html列表並使用jquery和css來設計它。
<ul>
<li><a href="">Top level item 1</a>
<ul>
<li><a href="">Sub item</a></li>
</ul>
</li>
<li><a href="">Top level item 2</a>
<ul>
<li>Sub item</li>
</ul>
</li>
</ul>
每個項目都可以/應該涉及控制器/操作方法。然後,您必須確定您正在查看哪個控制器/操作,以確保爲每個頁面選擇了正確的菜單項。
這是我創建的menu.ascx局部視圖。
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<% string menu = ViewContext.RouteData.Values["Controller"].ToString().ToLower(); %>
<% string submenu = ViewContext.RouteData.Values["Action"].ToString().ToLower(); %>
<div id="navigation">
<ul id="menu" class="nav-menu nav-navbar">
<% if (menu=="home") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Home", "Index", "Home") %>
<ul></ul>
</li>
<% if (menu=="configuration") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Configuration", "Index", "Configuration") %>
<ul>
<% if (menu=="configuration" && submenu=="page") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Pages", "Pages", "Configuration") %>
</li>
<% if (menu=="configuration" && submenu=="headline") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Headlines", "Headlines", "Configuration") %>
</li>
<% if (menu=="configuration" && submenu=="file") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Files", "Files", "Configuration") %>
</li>
<% if (menu=="configuration" && submenu=="rules") { %><li class="current"><% } else { %><li><% } %>
<%= Html.ActionLink("Application Rules", "Rules", "Configuration") %>
</li>
</ul>
</li>
...
如果您想要在網站中瀏覽整個頁面,則必須考慮那些想通過URL /書籤直接訪問特定頁面的用戶。搜索引擎索引也是如此。你確定要這麼做嗎? – 2009-11-01 11:26:26
我從來沒有提到過AJAX,並且有一個很好的理由 - 我不需要這個在真正的意義上是動態的。菜單內容是靜態的,頁面是由ASP.NET MVC生成的視圖。 – Shachar 2009-11-01 12:27:59
@Shachar:關於菜單,你確定AJAX將會過度。但是由於IE6的限制,你需要使用Javascript,請參閱http://www.alistapart.com/articles/dropdowns – 2009-11-01 13:58:58