在我的应用中,我正在尝试制作动态菜单。我在做什么就是这样。
1 - 我有一个模特
public class Menu
{
public String LinkText;
public String ActionName;
public String ControllerName;
public String OrganizationId;
public String SubMenuLabel;
}
2 - 我有一个控制器,它将菜单项添加到与上述模型相对应的列表中。
List<Menu> menu = new List<Menu>();
menu.Add(new Menu { LinkText = org.Name, ActionName = "Index", ControllerName = "Organization", OrganizationId = org.Id, SubMenuLabel = "Go To" });
ViewBag.menu = menu;
在视图一侧,我循环浏览菜单并显示菜单。我遇到的问题是子菜单。我正在努力将子菜单的逻辑放在一起。现在我有一个子菜单标签,如果存在我在下拉菜单中显示它,但如果我在子菜单中有多个条目,它就不起作用。
视图的代码是这个
@foreach (var item in ViewBag.menu)
{
<li class="divider"></li>
if (!String.IsNullOrEmpty(@item.SubMenuLabel))
{
<li class="has-dropdown not-click">
<a href="#">@item.SubMenuLabel</a>
<ul class="dropdown">
<li><a href="/@item.ControllerName/@item.ActionName/@item.OrganizationId" class="">@item.LinkText</a></li>
</ul>
</li>
}
else
{
<li>
<a href="/@item.ControllerName/@item.ActionName/@item.OrganizationId" class="">@item.LinkText</a>
</li>
}
}
任何想法?
答案 0 :(得分:1)
如果您将Menu对象列表作为subMenu,该怎么办?
public class Menu
{
public String LinkText;
public String ActionName;
public String ControllerName;
public String OrganizationId;
public List<Menu> SubMenus;
}
然后在视图中嵌套foreach:
@foreach (var item in ViewBag.menu)
{
<li class="divider"></li>
if (item.SubMenu != null){
@foreach (var subMenu in item)
{
...
}
}
else
{
<li>
<a href="/@item.ControllerName/@item.ActionName/@item.OrganizationId" class="">@item.LinkText</a>
</li>
}
}