如何使用数据库中的数据动态构建html导航栏

时间:2015-03-16 21:59:53

标签: c# xml linq recursion

我从具有自我关系的数据库获取此数据

 Parent_ID     Name           Child_ID
 1             cities         null
 2             Egypt          1
 3             Saudi          1
 4             technology     null
 5             vb.net         4
 6             c#             4

现在我想使用这个数据构建html导航栏

如下所示

<ul>
  <li><a href="#">cities</a>
    <ul>
      <li><a href="#">Egypt</a></li>
      <li><a href="#">Saudi</a></li>
    </ul>
  </li>
  <li><a href="#">technology</a>
    <ul>
      <li><a href="#">vb.net</a></li>
      <li><a href="#">c#</a></li>
    </ul>
  </li>
</ul>

我不知道最好的方法是什么 我是xml节点或我正在使用linqu ... 无论最好的方式是什么帮助我。

2 个答案:

答案 0 :(得分:0)

您可以使用asp:reapeater控件为其提供数据源并在其中提供html格式。最简单有效的方法。

更多探索....

已编辑:您必须提及

在mvc中,您可以在viewBagviewdata内传递数据,无论您喜欢什么,并且在视图中您可以使用foreach迭代并在其中生成所需的html

喜欢

ViewDate["data whatever"] = your data

和html

@foreach(var item in ....)
{
  <a href='item.whatever Value'>
}

答案 1 :(得分:0)

好的,这是创建n深度菜单视图模型的一种方法

使用一个select来获取表中的所有数据,并填充menuItemMV列表。创建一个menuMV对象,并将此列表放在静态AllMenuItems列表中。为菜单的根创建一个剃刀视图并将其绑定到menuMV。为菜单项创建一个局部视图,该菜单项绑定到menuItemVM,它应该包含一个循环遍历childern的for循环,并递归调用它正在渲染的menuItemVM中每个子节点的RenderParital本身(部分视图)。

让你的根菜单剃刀循环遍历rootMenuItems并渲染每个

的menuitem局部视图
    public class menuVM
    {
        public static List<menuItemVM> AllMenuItems { get; set; }

        public IEnumerable<menuItemVM> rootMenuitems
        {
            get { return menuVM.AllMenuItems.Where(c => c.ParentId == null); }
        }
    }

    public class menuItemVM
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public int ParentId { get;set; }

        public IEnumerable<menuItemVM> Childern {
            get
            {
                return menuVM.Childern.Where(c => c.ParentId == this.Id);
            }
        }
    }
  

PS。我认为你有孩子和父母的错误方法   样本数据