Javascript 获取与一个用户(ASP.NET)相关的所有角色

Javascript 获取与一个用户(ASP.NET)相关的所有角色,javascript,asp.net,asp.net-mvc,entity-framework,Javascript,Asp.net,Asp.net Mvc,Entity Framework,我有三张桌子。用户、角色和角色用户 以下是用户模型: 下面是UserToRole模型: 如何解决问题?您应该将服务器上的角色与其关联的用户分组。例如,像这样的模型: public class UserViewModel { public string UserName { get; set; } public IEnumerable<string> Roles { get; set; } } 现在进行以下查询: public List<UserViewMode

我有三张桌子。用户、角色和角色用户

以下是用户模型:

下面是UserToRole模型:


如何解决问题?

您应该将服务器上的角色与其关联的用户分组。例如,像这样的模型:

public class UserViewModel
{
    public string UserName { get; set; }
    public IEnumerable<string> Roles { get; set; }
}
现在进行以下查询:

public List<UserViewModel> GetUsers()
{
    var users = db.Users
        .Include(u => u.UserToRoles.Select(ur => ur.Role))
        .Select(u => new UserViewModel
        {
            UserName = u.Name,
            Roles = u.UserToRoles.Select(ur => ur.Role.Name)
        })
        .ToList();

    return users;
}
现在,在客户机上,您可以逐个用户循环数据,例如:

function GetUsers() {
    let url = "/Home/GetUsers";
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function (data) {
            var separator = "";
            for (var i = 0; i < data.length; ++i) {
                var userRow = data[i].UserName + " - " + data[i].Roles.join(", ");

                $('#taskresult3').append(separator + userRow);
                separator = ",";
            }
        }
});

在您的回购方法代码中,您有一个问题您选择,用户不包含SelectOops的定义,打字错误小,当您在SO中输入时很难做到这一点,并且不是一个合适的IDE:Nope。不管用。我像这样尝试了var users=db.users.Selectu=>newuserviewmodel{UserName=u.Name,Roles=u.UserToRoles.Selectur=>ur.Role.RoleName}.ToList;但现在我看不到RoleName了,我已经添加了一个Include,这有帮助吗?
public List<UserViewModel> GetUsers()
{
    var result = db.UserToRoles.Select(x=>new UserViewModel
    {
        UserName = x.User.Name,
        RoleName = x.Role.RoleName
    }).ToList();
    return result;        
}
function GetUsers() {
    let url = "/Home/GetUsers";
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function (data) {
            var separator = "";
            for (var i = 0; i < data.length; ++i) {
                $('#taskresult3').append(separator + '<b>' + data[i].UserName + "-" + data[i].RoleName + '</b>');
                separator = ",";
            }
        }
    });
}
public class UserViewModel
{
    public string UserName { get; set; }
    public IEnumerable<string> Roles { get; set; }
}
public List<UserViewModel> GetUsers()
{
    var users = db.Users
        .Include(u => u.UserToRoles.Select(ur => ur.Role))
        .Select(u => new UserViewModel
        {
            UserName = u.Name,
            Roles = u.UserToRoles.Select(ur => ur.Role.Name)
        })
        .ToList();

    return users;
}
function GetUsers() {
    let url = "/Home/GetUsers";
    $.ajax({
        type: 'GET',
        url: url,
        dataType: 'json',
        success: function (data) {
            var separator = "";
            for (var i = 0; i < data.length; ++i) {
                var userRow = data[i].UserName + " - " + data[i].Roles.join(", ");

                $('#taskresult3').append(separator + userRow);
                separator = ",";
            }
        }
});