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();