加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

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

发布时间:2020-12-15 18:34:11 所属栏目:asp.Net 来源:网络整理
导读:我有一个类别中的一组项目的嵌套数据对象。每个类别可以包含子类别,并且没有对子类别的深度设置限制。 (文件系统将具有类似的结构。)它看起来像这样: class category{ public int id; public string name; public IQueryablecategory categories; public I
我有一个类别中的一组项目的嵌套数据对象。每个类别可以包含子类别,并且没有对子类别的深度设置限制。 (文件系统将具有类似的结构。)它看起来像这样:
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;
        }
    }
}

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读