asp.net-mvc - ASP.NET MVC View 中的递归

标签 asp.net-mvc recursion

我有一个嵌套的数据对象,用于类别中的一组项目。每个类别可以包含子类别,并且子类别的深度没有设置限制。 (文件系统将具有类似的结构。)它看起来像这样:

class category
{
    public int id;
    public string name;
    public IQueryable<category> categories;
    public IQueryable<item> items;
}
class item
{
    public int id;
    public string name;
}

我将一个类别列表传递给我的 View IQueryable<category> .我想将类别输出为一组嵌套的无序列表( <ul> )块。我可以嵌套 foreach 循环,但是子类别的深度将受到嵌套 foreach 块数的限制。在 WinForms 中,我使用递归来填充 TreeView 做了类似的处理。 ,但我还没有看到任何在 ASPX MVC View 中使用递归的示例。

可以在 ASPX View 中完成递归吗?是否有其他 View 引擎包含 View 输出的递归?

最佳答案

创建您自己的 HtmlHelper 扩展方法,如下所示:

namespace System.Web.Mvc
{
    public static class HtmlHelperExtensions
    {
        public static string CategoryTree(this HtmlHelper html, IEnumerable<Category> categories)
        {
            string htmlOutput = string.Empty;

            if (categories.Count() > 0)
            {
                htmlOutput += "<ul>";
                foreach (Category category in Categories)
                {
                    htmlOutput += "<li>";
                    htmlOutput += category.Name;
                    htmlOutput += html.CategoryTree(category.Categories);
                    htmlOutput += "</li>";
                }
                htmlOutput += "</ul>";
            }

            return htmlOutput;
        }
    }
}

你应该问很有趣,因为我昨天才真正创建了其中一个。

关于asp.net-mvc - ASP.NET MVC View 中的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942489/

相关文章:

c# - 使用响应式(Reactive)扩展在逻辑门模拟器中创建稳定的反馈回路?

recursion - 使用 Java 8 Streams 求和树节点

javascript - ng-click 在 MVC 部分 View 中不起作用

javascript - 如何从html弹出窗口返回值

asp.net-mvc - MVC 3 依赖解析器还是 Ninject MVC 插件?

python - Python中双重递归的结果

r - 在 R 中生成由节点函数递归定义的 K-Nary 树

c# - 项目构建但无法发布

c# - Entity Framework : writing a common method to check exist

algorithm - Mergesort - 递归调用的最大数量