1

在我进入一个自定义的实现之前,我想问一下社区是否有任何内置的帮助器来构建MVC4中的实体嵌套菜单。我有数据的层次结构是这样的:如何使用MVC4构建一个嵌套菜单

> Folder 1 
> Folder 2 
>> Folder 2.1 
>> Folder 2.2 
>>> Item 2.2.1 
>>> Folder 2.2.1 
>> Folder 2.3 
> Folder 3 

而且我想通过嵌套数组的数组(嵌套的数组,[嵌套的数组,...])到控制器打造成为名单相应的嵌套链接。在我深入研究之前,我有几个问题:

  1. 什么样的工具可以帮助解决这个问题?
  2. 如果您必须构建自定义,您将使用哪些数据结构?

我完全是MVC/C#的新手,所以任何建议/指针都会很棒。

+0

数据来自数据源吗?或者它是静态的? – 2013-03-10 03:31:19

+0

它来自DTO,我可以通过数据库直接从POCO以任何方式构建。所以数据源,不是静态的(我认为) – RobVious 2013-03-10 03:34:20

回答

1

什么样的工具可以帮助解决这个问题?

我个人还没有碰到现成的解决方案。

如果您必须构建自定义,您将使用哪些数据结构?

最好的办法是为此构建一个自定义类。像tree那样有dictionary of nodes。 你可以建立如下一个自定义的:如果你想了解更多详细信息

public class Tree 
{ 
    private TreeNode rootNode; 
    public TreeNode RootNode 
    { 
     get { return rootNode; } 
     set 
     { 
      if (RootNode != null) 
       Nodes.Remove(RootNode.Id); 

      Nodes.Add(value.Id, value); 
      rootNode = value; 
     } 
    } 

    public Dictionary Nodes { get; set; } 

    public Tree() 
    { 
    } 

    public void BuildTree() 
    { 
     TreeNode parent; 
     foreach (var node in Nodes.Values) 
     { 
      if (Nodes.TryGetValue(node.ParentId, out parent) && 
       node.Id != node.ParentId) 
      { 
       node.Parent = parent; 
       parent.Children.Add(node); 
      } 
     } 
    } 
} 

,然后this link拥有所有你所需要的。

+0

哇!真棒。我没有考虑给这个课加一个课。谢谢Bhushan – RobVious 2013-03-10 04:05:58

+0

@RobVious很高兴帮助... – 2013-03-10 04:18:54