asp.net - 获取在asp.net Identity 2.0中分配角色的用户列表

标签 asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-identity-2

我有一个列出角色的下拉列表框。我想获取具有该角色的用户列表。我的意思是具有“管理员”角色或“CanEdit”角色的用户列表。这是我的代码:

public IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> 
  GetRolesToUsers([Control] string ddlRole)
{    
  //ddlRole returns role Id, based on this Id I want to list users

  var _db = new ApplicationDbContext();
  IQueryable<Microsoft.AspNet.Identity.EntityFramework.IdentityUser> query = _db.Users;

  if (ddlRole != null)
  {
    //query = query.Where(e => e.Claims == ddlRole.Value);  ???????              
  }

  return query;
}

请帮忙。

更新代码(仍然错误)

public List<IdentityUserRole> GetRolesToUsers([Control]string ddlRole)
{

  var roleManager = 
   new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(new ApplicationDbContext()));
  var users = roleManager.FindByName("Administrator").Users.ToList();
  return users;
}

错误:当 ItemType 设置为“Microsoft.AspNet.Identity.EntityFramework.IdentityUser”时,Select 方法必须返回“IQueryable”或“IEnumerable”或“Microsoft.AspNet.Identity.EntityFramework.IdentityUser”之一。

我尝试了各种 Actor ,但没有一个有帮助。

更新(工作解决方案)

感谢 chris544,他的想法帮助我解决了这个问题。这是工作方法:-

public List<ApplicationUser> GetRolesToUsers([Control]string ddlRole)
{
  var context = new ApplicationDbContext();
  var users =
    context.Users.Where(x => x.Roles.Select(y => y.RoleId).Contains(ddlRole)).ToList();

  return users;
}

最佳答案

不是专家,但是......

在身份中似乎没有内置的功能,我也无法从内置的角色中得到它的工作(它似乎不适用于基于声明的身份)。

所以我最终做了这样的事情:

var users = context.Users        
    .Where(x => x.Roles.Select(y => y.Id).Contains(roleId))
    .ToList();
  • x.Roles.Select(y => y.Id) 获取用户 x 的所有角色 ID 列表
  • .Contains(roleId) 检查此 ID 列表是否包含必要的 roleId

关于asp.net - 获取在asp.net Identity 2.0中分配角色的用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23824397/

相关文章:

asp.net - 表单例份验证 Web 表单 错误消息 401.2 访问被拒绝

c# - MVC5 Razor View String.Join 每次迭代时反转顺序

c# - PlaceHolder + @Html.TextBox 问题

asp.net-mvc-4 - 在 ASP.NET MVC4 WebAPI 中实现 ETag 支持

c# - 尝试删除 asp.net 中的文件时出现错误

c# - GridView 中的重复行

asp.net - 如何让 Owin 在访问 token 过期时自动使用刷新 token

javascript - 如何在没有 Form 或 Beging 表单标签的情况下使用 AJAX 在 asp.net MVC 5 中使用所有输入的文本框值上传图像?

sql-server - 连接字符串名称和 Entity Framework

asp.net-mvc - ASP.NET MVC 4 包在文件夹路径中带有通配符