多级导航菜单 递归

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

namespace WebApplication3
{
    public partial class WebForm1 : System.Web.UI.Page
    {
        Model1 db = new Model1();
        public IEnumerable<Category> Categories { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
            Categories = db.Category;
        }
        protected string RenderCategory(int parendId)
        {
            StringBuilder sb = new StringBuilder();
            sb.Append("<ul>");
            foreach (var item in Categories)
            {
                if (item.ParentId == parendId)
                {
                    sb.AppendFormat("<li><a>{0}</a>", item.Name);
                    sb.Append(RenderCategory(item.Id));
                    sb.Append("</li>");

                }
            }
            sb.Append("</ul>");
            return sb.ToString();
        }
    }
}

前端

  <%=RenderCategory(0) %>

委托的方法

前端

<%
    int count = 0;
    RenderCategory = parentId =>
    { 
%>
<ul <%= parentId==0?"id="categories" class="dropdown-menu"":"class="sub-item"" %>>
    <% 
        foreach (var item in Categories)
        {
            if (item.ParentId == parentId)
            {
                // 有子类
    %>
    <li>
        <a href="<%=UrlHelper.CategoryUrl(item.Id)%>"><%if (parentId == 0)
                                                        {%><i class="icon-main icon-<%=count++ %>"></i><%}%><%= item.Name %></a>
        <% RenderCategory(item.Id); %>
    </li>
    <%
            }
        }
    %>
</ul>
<%
    }; 
%>
<% RenderCategory(0); %>

后端比之前的方法 多了个    public Action<int> RenderCategory { get; set; } 属性

原文地址:https://www.cnblogs.com/crazyair/p/4439519.html