C# MVC 中的动态子菜单
dynamic sub menu in C# MVC
在我的应用程序中,我试图制作一个动态菜单。我正在做的是这样的。
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>
}
}
有什么想法吗??
如果您有一个菜单对象列表作为子菜单怎么办?
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>
}
}
在我的应用程序中,我试图制作一个动态菜单。我正在做的是这样的。
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>
}
}
有什么想法吗??
如果您有一个菜单对象列表作为子菜单怎么办?
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>
}
}