gpt4 book ai didi

c# - 如何创建无限嵌套子菜单?

转载 作者:太空宇宙 更新时间:2023-11-03 18:35:52 25 4
gpt4 key购买 nike

我正在尝试编写一个模块。它是菜单管理模块,您可以创建任意数量的菜单和子菜单。但是现在在我的模块中你的菜单深度可以到三。这意味着我的模块支持根菜单和它的子菜单以及最大的子菜单但是我正在考虑一种算法来创建无限嵌套的子菜单以及如何在网站上展示它们。我的意思是我想让用户自由创建无限嵌套子菜单。我不知道我的模型和数据库应该如何设置才能实现我的目标。我正在使用 MVC3 和 C# 以及 Entity Framework 。谢谢。

最佳答案

就数据模型而言,您可以:

  • 身份证
  • 菜单文本
  • 网址
  • 父级

对于顶级菜单项,ParentId 将为 NULL。否则,它指向父级。

大多数 UI 菜单(如 Superfish.js)使用 <ul><li>呈现菜单的元素。只需遍历数据库中的菜单项即可构建出 <ul>结构。

这是一个开始:

private void BuildMenu()
{
List<MenuItem> menuItems = GetTopLevelMenuItems();

string html = "<ul>";

foreach (var menuItem in menuItems)
{
html += BuildMenuSubMenu(menuItem);
}
html += "</ul>"
}

private string BuildMenuSubMenu(MenuItem menuItem)
{
string html = string.Empty;

List<MenuItem> childItems = GetChildItems(menuItem);

html += string.Format("<li><a href=\"{0}\">{1}</a>", menuItem.Url, menuItem.MenuText);

if (childItems.Count > 0)
{
html += "<ul>";
foreach (var child in childItems)
{
html += BuildMenuSubMenu(child);
}
html += "<ul>";
}

html += "<li>";

return html;
}

关于c# - 如何创建无限嵌套子菜单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15667473/

25 4 0