asp.net-mvc – 在ASP.NET MVC视图中递归

我有一个类别中的一组项目的嵌套数据对象。每个类别可以包含子类别,并且没有对子类别的深度设置限制。 (文件系统将具有类似的结构。)它看起来像这样:
class category
{
    public int id;
    public string name;
    public IQueryable<category> categories;
    public IQueryable<item> items;
}
class item
{
    public int id;
    public string name;
}

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

可以在ASPX视图中递归吗?还有其他视图引擎包含递归视图输出

解决方法

创建自己的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;
        }
    }
}

有趣的是你应该问,因为我昨天才真正创造了其中之一。

相关文章

这篇文章主要讲解了“WPF如何实现带筛选功能的DataGrid”,文...
本篇内容介绍了“基于WPF如何实现3D画廊动画效果”的有关知识...
Some samples are below for ASP.Net web form controls:(fr...
问题描述: 对于未定义为 System.String 的列,唯一有效的值...
最近用到了CalendarExtender,结果不知道为什么发生了错位,...
ASP.NET 2.0 page lifecyle ASP.NET 2.0 event sequence cha...