javascript - 如何使用 Mvc 和数据库设计嵌套的 css

标签 javascript css asp.net-mvc

我正在数据库中使用一个表,该表具有以下列: menuId(主键) ,MenuName, displayMenuorder ,ParentMenuId(外键) 引用 menuid(主键)。

我在数据库中有一些数据,我想呈现一个像这样的菜单:。 https://bootsnipp.com/snippets/featured/mega-menu-slide-down-on-hover-with-carousel

我尝试了很多东西,但仍然无法弄清楚,这就是我到目前为止所做的。请帮忙。提前致谢。

SQL 数据库

Menuid  Menuname displayMenuorder parentmenuid
1   Root                1       NULL
2   HOME                1       1
3   ELECTRONICS         2       1
4   APPLIANCES          3       1
5   BABY & KIDS         4       1
6   HOME & FURNITURE    5       1
7   Samsung             1       3
8   Apple               1       3   
9   Kitchen Appliances  1       4
10  Microwave           1       9

Controller

public ActionResult MainMenu()
        {
            var mainmenu = db.Menus.SingleOrDefault(x => x.ParentMenuId == null);            
            return View(mainmenu);
        }

        [ChildActionOnly]
        public ActionResult MainMenuid(int id)
        {
            var items = db.Menus.Find(id);
            return PartialView(items);
        }

查看主菜单

@model Arrivaler.Models.Menu

@{
    Layout = null;
}

<div class="container">
    <nav class="navbar navbar-inverse">
        <div class="navbar-header">
            <button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".js-navbar-collapse">

                <span class="sr-only">Toggle navigation</span>

                <span class="icon-bar"></span>

                <span class="icon-bar"></span>

                <span class="icon-bar"></span>

            </button> <a class="navbar-brand" href="#">My Store</a>
        </div>
        <ul class="nav navbar-nav">
            @foreach (var menuItem in Model.ChildItems.OrderBy(x => x.DisplayMenuOrder))
            {
                @Html.Action("MainMenuid", new { id = menuItem.MenuId })
            }
        </ul>
        </nav>
</div>

查看 MainMenuId

@model Arrivaler.Models.Menu

<link href="~/Content/bootstrap.min.css" rel="stylesheet" />
<link href="~/Content/test.css" rel="stylesheet" />
<script src="~/Scripts/jquery-1.10.2.min.js"></script>
<script src="~/Scripts/navMenu.js"></script>

<li class="dropdown mega-dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">@Model.MenuName<span class="caret"></span></a>
    <ul class="dropdown-menu mega-dropdown-menu">
        <li class="col-sm-3">
            <ul>
                <li class="dropdown-header">@Model.MenuName</li>
                <li>
                    <a href="@Model.MenuId">
                        @if (Model.ChildItems.Any())
                        {
                            foreach (var menuItem in Model.ChildItems.OrderBy(x => x.DisplayMenuOrder))
                            {
                                @Html.Action("MainMenuid", new { id = menuItem.MenuId })
                            }
                        }
                    </a>
                </li>
            </ul>       
        </li>
    </ul>
</li>

CSS

.mega-dropdown {
  position: static !important;  
}
.mega-dropdown-menu {
    padding: 20px 0px;
    width: 100%;
    box-shadow: none;
    -webkit-box-shadow: none;    
}
.mega-dropdown-menu > li > ul {
  padding: 0;
  margin: 0;
}
.mega-dropdown-menu > li > ul > li {
  list-style: none;
}
.mega-dropdown-menu > li > ul > li > a {
  display: block;
  color: #222;
  font-size:large;
  padding: 0px 5px;
}
.mega-dropdown-menu > li ul > li > a:hover,
.mega-dropdown-menu > li ul > li > a:focus {
  text-decoration: none;
}
.mega-dropdown-menu .dropdown-header {
  font-size: 18px;
  color: #ff3546;
  padding: 5px 60px 5px 5px;
  line-height: 30px;
}

.carousel-control {
  width: 30px;
  height: 30px;
  top: -35px;

}
.left.carousel-control {
  right: 30px;
  left: inherit;
}
.carousel-control .glyphicon-chevron-left, 
.carousel-control .glyphicon-chevron-right {
  font-size: 12px;
  background-color: #fff;
  line-height: 30px;
  text-shadow: none;
  color: #333;
  border: 1px solid #ddd;
}

JavaScript

$(document).ready(function () {
    $(".dropdown").hover(
        function () {
            $('.dropdown-menu', this).not('.in .dropdown-menu').stop(true, true).slideDown("100");
            $(this).toggleClass('open');
        },
        function () {
            $('.dropdown-menu', this).not('.in .dropdown-menu').stop(true, true).slideUp("100");
            $(this).toggleClass('open');
        }
    );
});

我的输出是这样的。

output image

最佳答案

你可以看看这个。

CSS

#primary_nav_wrap ul
{
    list-style:none;
    position:relative;
    float:left;
    margin:0;
    padding:0
}

#primary_nav_wrap ul a
{
    display:block;
    color:#333;
    text-decoration:none;
    font-weight:700;
    font-size:12px;
    line-height:32px;
    padding:0 15px;
    font-family:"HelveticaNeue","Helvetica Neue",Helvetica,Arial,sans-serif
}

#primary_nav_wrap ul li
{
    position:relative;
    float:left;
    margin:0;
    padding:0
}

#primary_nav_wrap ul li.menu-li
{
    /*background:#ddd;*/
}

#primary_nav_wrap ul li:hover
{
    background:#f6f6f6;
    z-index : 10;
}

#primary_nav_wrap ul ul
{
    display:none;
    position:absolute;
    top:100%;
    left:0;
    background:#fff;
    padding:0
}

#primary_nav_wrap ul ul li
{
    float:none;
    width:200px
}

#primary_nav_wrap ul ul a
{
    line-height:120%;
    padding:10px 15px
}

#primary_nav_wrap ul ul ul
{
    top:0;
    left:100%
}

#primary_nav_wrap ul li:hover > ul
{
    display:block;    
} 

主菜单操作 View

<nav id="primary_nav_wrap">
<ul>
    /*your loop*/
</ul>
</nav>

主菜单操作 View

<li>
<a></a>
<ul>
</ul>
</li>

关于javascript - 如何使用 Mvc 和数据库设计嵌套的 css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45956325/

相关文章:

asp.net-mvc - asp.net mvc3 属性上的绑定(bind)排除不起作用

javascript - 仅为附加文本设置字体大小

javascript - 如何编写比向每个元素添加事件类和隐藏类更简洁的代码

javascript - 在 Chrome 开发工具时间线中 : What are the gray bars surrounding resource downloads in the network row?

CSS 动画不适用于移动设备

css - 为您的整个网站使用 jQuery 主题是错误的吗?

javascript - 如何将图像添加到每个 Canvas ?

javascript - 如何为浏览器操作指定热键?

JQuery/MVC 搜索问题

ASP.NET CssMinify,HttpContextBase