TreeView в ASP.NET Core MVC с использованием движка RAZOR без библиотек JS - PullRequest
0 голосов
/ 04 апреля 2019

У меня есть проблема, связанная с тем, что обычные System.Web.UI.WebControls с @ (Html.TreeView (Model) не реализованы в ASP.NET Core. Возможно ли реализовать иерархическое представление дерева с рекурсией, используя только Razor, html

Вот моя модель узла дерева:

public class EmployeeTree
{
    public EmployeeTree()
    {
        Reporters = new List<EmployeeTree>();
    }
    public int Id { get; set; }
    public int? ManagerId { get; set; } 
    [Required]
    [MaxLength(30)]
    public string FirstName { get; set; }
    [Required]
    [MaxLength(30)]
    public string SecondName { get; set; }
    [Required]
    [MaxLength(30)]
    public string Position { get; set; }
    public string Phone { get; set; }

    public virtual EmployeeTree Manager { get; set; }
    public virtual List<EmployeeTree> Reporters { get; set; }
}

Я пробовал такую ​​рекурсию Razor с помощником @functions, но он не загружал дочерние элементы. Любые предложения, что не так?

@using System.Text

@functions{
    void GetEmployeeTree(EmployeeTree data)
    {
        StringBuilder output = new StringBuilder();
        output.Append("Employee");
        output.Append("<li>");
        output.Append(data.FirstName);
        if (data.Reporters.Count > 0)
        {
            foreach (var dataNode in data.Reporters)
            {
                output.Append("<ul>");
                output.Append(dataNode.FirstName);
                GetEmployeeTree(dataNode);
                output.Append("</ul>");
            }
        }
        output.Append("</li>");
    }
}
...