Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 如何获取用户在MVC 5中注册的角色ID_Asp.net_Asp.net Mvc_Asp.net Mvc 5_Asp.net Identity_User Roles - Fatal编程技术网

Asp.net 如何获取用户在MVC 5中注册的角色ID

Asp.net 如何获取用户在MVC 5中注册的角色ID,asp.net,asp.net-mvc,asp.net-mvc-5,asp.net-identity,user-roles,Asp.net,Asp.net Mvc,Asp.net Mvc 5,Asp.net Identity,User Roles,我正在尝试获取用户当前注册的角色的IList 现在在Usermanager类中,我看到了一个函数调用IList usersRoles=Usermanager.GetRoles(id)但它只是以字符串形式返回角色的名称。这对我没有帮助,因为我需要角色的id、名称和描述 我如何进行类似的呼叫,但收到的是applicationRole而不是字符串 这是我的模型: public class ApplicationRole : IdentityRole { [Display(Name = "

我正在尝试获取用户当前注册的角色的
IList

现在在Usermanager类中,我看到了一个函数调用
IList usersRoles=Usermanager.GetRoles(id)
但它只是以字符串形式返回角色的名称。这对我没有帮助,因为我需要角色的
id
名称
描述

我如何进行类似的呼叫,但收到的是applicationRole而不是字符串

这是我的模型:

   public class ApplicationRole : IdentityRole
{
    [Display(Name = "Description")]
    [StringLength(100, MinimumLength = 5)]
    public string Description { get; set; }

}

我认为您需要查询ApplicationDbContext以获取它,因为从
UserManager
UserStore
API中调用一次显然无法获取它

var context = new ApplicationDbContext();
var roles = await context.Users
                    .Where(u => u.Id == userId)
                    .SelectMany(u => u.Roles)
                    .Join(context.Roles, ur => ur.RoleId, r => r.Id, (ur, r) => r)
                    .ToListAsync();

我想你在找
rolemager
。它在形式和功能上与
UserManager
非常相似,但专门针对角色为CRUD的用户

var RoleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context));


您可以尝试此操作以获取应用程序角色列表

 List<string> roleNames = UserManager.GetRoles(userId).ToList();

 List<ApplicationRole> roles = RoleManager.Roles.Where(r => roleNames.Contains(r.Name)).ToList();
List roleNames=UserManager.GetRoles(userId.ToList();
List roles=rolemanger.roles.Where(r=>roleNames.Contains(r.Name)).ToList();
var role = await RoleManager.FindByNameAsync(roleName); 
 List<string> roleNames = UserManager.GetRoles(userId).ToList();

 List<ApplicationRole> roles = RoleManager.Roles.Where(r => roleNames.Contains(r.Name)).ToList();