使用ASP.NETMVC4和jQuery的动态菜单
我正在开发一个ASP.NETMVC4模块,它应该根据从数据库获取的数据在我的视图中显示多级菜单。由于我不清楚如何完成整个任务,我决定一步一步地完成,我想我最终会得到我想要的结果 我做了一些谷歌搜索,现在我有了这个: 类使用ASP.NETMVC4和jQuery的动态菜单,jquery,html,jquery-ui,asp.net-mvc-4,razor,Jquery,Html,Jquery Ui,Asp.net Mvc 4,Razor,我正在开发一个ASP.NETMVC4模块,它应该根据从数据库获取的数据在我的视图中显示多级菜单。由于我不清楚如何完成整个任务,我决定一步一步地完成,我想我最终会得到我想要的结果 我做了一些谷歌搜索,现在我有了这个: 类MenuItem: public class MenuItem { public MenuItem() { this.ChildMenuItems = new List<MenuItem>(); } public int MenuItemId
MenuItem
:
public class MenuItem
{
public MenuItem()
{
this.ChildMenuItems = new List<MenuItem>();
}
public int MenuItemId { get; set; }
public string MenuItemName { get; set; }
public string MenuItemPath { get; set; }
public Nullable<int> ParentItemId { get; set; }
public virtual ICollection<MenuItem> ChildMenuItems { get; set; }
}
我认为应该使用Entity Framework 5
和code First
工作流,这样这些类将来可能会有用,但现在我在控制器中创建的都是虚拟数据-为了简单起见,使用Visual Studio 2012
创建的默认MVC 4项目中的HomeController
。然后在局部视图中呈现数据\u菜单
:
public class Menu
{
public Menu()
{
Items = new List<MenuItem>();
}
public List<MenuItem> Items;
}
@model DynamicMenu.Models.Menu
<ul id="menu">
@foreach (var item in Model.Items)
{
<li><a href="@item.MenuItemPath">@item.MenuItemName</a>
@if (item.ChildMenuItems.Any())
{
<ul>
@foreach (var subitem in item.ChildMenuItems)
{
<li><a href="@subitem.MenuItemPath">@subitem.MenuItemName</a></li>
}
</ul>
}
</li>
}
</ul>
本例使用的是jQuery菜单小部件
,它似乎可以提供我需要的东西,但我现在想解决的问题是,通过这样的代码,我得到以下输出:
我想要的是在鼠标悬停时显示/隐藏子菜单。使用纯HTML
和JavaScript/jQuery
我认为这会更容易(虽然不确定),但我希望(如果可能)坚持使用Razor
视图引擎
因此,我的问题是:
- 给定代码,如何在鼠标悬停时显示和隐藏子菜单
- 很多网站都有这样的菜单,所以我认为也许有一种标准的方法来实现这样的功能。尽管我的搜索只找到了部分解决方案,但有人能给我指出一个网站/教程,其中展示/解释了实现这种功能的过程吗
@Styles.Render("~/Content/css")
//Next two rows are added
<link href="../../Content/themes/base/jquery.ui.core.css" rel="stylesheet" type="text/css" />
<link href="../../Content/themes/base/jquery.ui.menu.css" rel="stylesheet" type="text/css" />
@Scripts.Render("~/bundles/modernizr")
//some more default code...
<script>
$(document).ready(function () {
$("#menu").menu();
});
</script>