使用 Asp.Net Core 为 JTree 中的每个节点添加 <a> 链接

问题描述

如何向 JTree 中的每个节点(根节点或子节点)添加标签链接,我使用 EFCore 从数据库获取数据 我希望每个节点都有这样的链接

<a class="btn btn-primary" asp-action="TaskTypeDetail" asp-controller="Admin" asp-route-TaskTypeNumber=@item.TaskTypeNumber>details</a> 

像这样的我的控制器:

 public class TreeviewController : Controller
{
    private readonly RoleManager<IdentityRole> roleManager;
    private readonly UserManager<ApplicationUser> userManager;
    private readonly ApplicationDbContext applicationDbContext;

    public TreeviewController(RoleManager<IdentityRole> roleManager,UserManager<ApplicationUser> userManager,ApplicationDbContext applicationDbContext)
    {
        this.roleManager = roleManager;
        this.userManager = userManager;
        this.applicationDbContext = applicationDbContext;
    }
    public IActionResult Index()
    {
        return View();
    }
    public JsonResult GetRoot()
    {
        List<JStreemodel> items = GetTree();

        return new JsonResult (  items );
    }

    public JsonResult GetChildren(string id)
    {
        List<JStreemodel> items = GetTree(id);

        return new JsonResult (  items );
    }

    public List<JStreemodel> GetTree()
    {
        bool checkchildren;
        
        var items = new List<JStreemodel>();
        foreach (var role in roleManager.Roles)
        {
            foreach (var user in userManager.Users)
            {
                checkchildren = false;
                var checkUserInRole = userManager.IsInRoleAsync(user,role.Name).Result;
                if (checkUserInRole)
                {
                 
                    var checkEmployeeForUser = applicationDbContext.EmployeeInRoles.Where(s => s.RoleId == role.Id).ToList();
                    if (checkEmployeeForUser.Count > 0)
                    {
                        checkchildren = true;
                    }
                    items.Add(new JStreemodel { id = user.Id.ToString(),parent = "#",text = user.Name+" "+user.Family+" ریشه ",children = checkchildren,a_attr=""});
                }
            }
        }



     
        // set items in here

        return items;
    }

    public List<JStreemodel> GetTree(string id)
    {
        var items = new List<JStreemodel>();

        // set items in here
        //Loop and add the Child Nodes.
        bool checkchildren;
        string Role="";
        foreach (var subType in applicationDbContext.EmployeeInRoles)
        {
            
            checkchildren  = false;
            string Parentid = "";
            foreach (var findParent in userManager.Users)
            {
                var roleid = roleManager.FindByIdAsync(subType.RoleId);
                var checkParent = userManager.IsInRoleAsync(findParent,roleid.Result.Name).Result;
                if (checkParent) {
                    Parentid = findParent.Id;
                }
            }
            
            var user = userManager.Users.SingleOrDefault(s => s.Id == subType.UserId);
            foreach(var role in roleManager.Roles)
            {
                var checkUserInRole = userManager.IsInRoleAsync(user,role.Name).Result;
                if (checkUserInRole)
                {
                    Role = role.Id;
                    break;
                }
            }
            
            var checkEmployeeForUser = applicationDbContext.EmployeeInRoles.Where(s => s.RoleId == Role).ToList();
            if (checkEmployeeForUser.Count > 0)
            {
                checkchildren = true;
            }
            items.Add(new JStreemodel { id =  subType.Id.ToString(),parent = Parentid,text = user.Name + " " + user.Family,children=checkchildren});
        }

        return items;
    }
}

JStreemodel 像这样:

public class JStreemodel
{
    public string id { get; set; }
    public string parent { get; set; }
    public string text { get; set; }
    public string a_attr { get; set; }
    public bool children { get; set; } // if node has sub-nodes set true or not set false
}

和 Index.cshtml

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
<div id='treeview'></div>
    <script>

        $('#treeview').jstree({
            "plugins": ["search","contextmenu"],'core': {
            'data': {
            'url': function (node) {
                    return node.id === '#' ? "/Treeview/GetRoot" : "/Treeview/GetChildren/" + node.id;

                },'data': function (node) {
                    return {'id': node.id };
                }
            }
        }
    });

    $('#treeview').on('changed.jstree',function (e,data) {
            console.log("=> selected node: " + data.node.id);
    });

但是显示我的每个节点,当我点击它时,没有链接和 # 而不是链接 有人可以帮我吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...