问题:多层次引导下拉
我工作的一个nopCommerce主题,我结合引导。由于nopCommerce允许不定数量的父类别,我需要该主题才能够处理用户添加的尽可能多的子下拉菜单项。
现在发生的情况是,当第一层下拉菜单被点击时,任何其他带子菜单的子菜单也被“下拉”。
我的助手功能如下:
@helper RenderMenuLine(CategorySimpleModel category, int level)
{
bool isDrop = (category.SubCategories.Count > 0);
string toggleName = "dropdown" + level.ToString();
if (isDrop)
{
<li class="dropdown">
<a href="@Url.RouteUrl("Category", new { SeName = category.SeName })" class="dropdown-toggle" data-target="@toggleName" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="true">
@category.Name
<span class="caret"></span>
@if (category.NumberOfProducts.HasValue)
{
<text></text> @T("Categories.TotalProducts", category.NumberOfProducts.Value)
}
</a>
@{ var subCats = category.SubCategories.Where(x => x.IncludeInTopMenu); }
<ul class="dropdown-menu" id="@toggleName">
@foreach (var subCat in subCats)
{
@RenderMenuLine(subCat, level++)
}
</ul>
</li>
}
else
{
<li><a href="@Url.RouteUrl("Category", new { SeName = category.SeName })">@category.Name</a></li>
}
}
和我的基本菜单标记如下:
<div class="navbar navbar-default">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<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="@Url.RouteUrl("HomePage")"><i class="fa fa-home"></i></a>
</div>
<div id="navbar" class="navbar-collapse collapse">
<ul class="nav navbar-nav">
@{
var categories = Model.Categories.Where(x => x.IncludeInTopMenu).ToList();
}
@foreach (var item in categories)
{
@RenderMenuLine(item, 0)
}
</ul>
</div>
</div>
我已经看了引导多层次的下拉菜单中的其他样本 - 但是从我所看到的,我的帮助函数构建的标记应该工作。这里是什么样子,当我将鼠标悬停在父类像一个画面:“计算机”(POS是软件的一个子类):
注意我知道更多的造型可能是必要的。现在我只关心功能。此外,水平整数和togglename字符串的存在,因为我想也许我需要一种方法来将下拉菜单与菜单本身绑定。