【发布时间】:2014-05-23 08:27:23
【问题描述】:
我有一个列出角色的下拉列表框。我想获取具有该角色的用户列表。我的意思是“管理员”角色或“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”之一。
我尝试了各种铸件,但都没有帮助。
更新(工作解决方案)
感谢 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;
}
【问题讨论】:
-
试试 Roles.GetUsersInRole(),你可以得到使用默认 Role Provider API
-
@Larry 你的意思是 [string[] u = Roles.GetUsersInRole(ddlRole)] 或 [_roleManager.Roles.GetUsersInRole(ddlRole)]。首先产生“角色管理器功能尚未启用”错误,其次没有定义“GetUserInRole”。我应该如何使用 Roles.GetUsersInRole()?
-
您在使用 asp.net mvc 5 吗?我目前正在处理 4. 转到任何操作方法并键入“角色”,它位于“System.Web.Security”命名空间中。
-
我正在使用 ASP.NET 4.5 和 ASP.NET Identity 2.0
标签: asp.net asp.net-mvc asp.net-mvc-4 asp.net-identity asp.net-identity-2