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

前端之家收集整理的这篇文章主要介绍了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;
        }
    }
}

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

猜你在找的asp.Net相关文章