【问题标题】:How to build a nested menu with MVC4如何使用 MVC4 构建嵌套菜单
【发布时间】:2013-02-25 10:44:34
【问题描述】:

在我开始自定义实现之前,我想问问社区是否有任何内置的帮助程序可以用 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# 完全陌生,所以任何建议/指针都会很棒。

【问题讨论】:

  • 数据是否来自数据源?还是静态的?
  • 它来自一个 DTO,我可以直接从数据库中的 POCO 以任何我希望的方式构建它。所以数据源,不是静态的(我认为)

标签: c# asp.net-mvc asp.net-mvc-3 web-applications asp.net-mvc-4


【解决方案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 可以满足您的所有需求。

【讨论】:

  • 哇!惊人的。我没有考虑为此专门开设一堂课。谢谢布山
猜你喜欢
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2014-07-17
  • 2022-01-24
  • 1970-01-01
  • 2012-12-22
  • 2017-08-27
  • 1970-01-01
相关资源
最近更新 更多