2016-01-21 67 views
2

我试图找出如何让所有的用户和他们的角色进入一个很好的组织表,看到许多不同的方式去,但没有人为我工作。在最低限度,我已经得到了升职...任何能够帮助我的人?获取所有用户和他们的角色,他们进入一个表asp.net mvc

有了这个代码,我得到的所有角色:

 var context = new ApplicationDbContext(); 
     var roleStore = new RoleStore<IdentityRole>(context); 
     var roleManager = new RoleManager<IdentityRole>(roleStore); 
     var roles = (from r in roleManager.Roles select r.Name).ToList(); 
     ViewBag.Roles = roles.ToList(); 

,并使用此代码我得到的所有的注册用户:

 var context = new ApplicationDbContext(); 
     var userStore = new UserStore<ApplicationUser>(context); 
     var userManager = new UserManager<ApplicationUser>(userStore); 
     var users = (from u in userManager.Users select u.UserName).ToList(); 
     ViewBag.Users = users.ToList(); 

,最后用这个代码我得到所有的用户ID的

 var context = new ApplicationDbContext(); 
     var user = (from u in userManager.Users select u.Id).ToList(); 
     ViewBag.id = user.ToList(); 

但是我如何获得所有用户的角色?我真的不知道它

+0

你有一些映射表betwee n用户和角色? –

+0

@AleksandrIvanov我不这么认为,但是在我的角色视图中,作为管理员,我可以检查用户拥有哪些角色等等,请遵循本指南https://andersnordby.wordpress.com/2014/11/28/asp-net-mvc-4 -5-owin-simple-roles-management /几乎没有什么变化 –

回答

3

这里有一个选项来获得用户的列表(用户名)和相关的角色列表。

控制器:

public ActionResult GetRoles() 
     { 
      var userRoles = new List<RolesViewModel>(); 
      var context = new ApplicationDbContext(); 
      var userStore = new UserStore<ApplicationUser>(context); 
      var userManager = new UserManager<ApplicationUser>(userStore); 

      //Get all the usernames 
      foreach (var user in userStore.Users) 
      { 
       var r = new RolesViewModel 
       { 
        UserName = user.UserName 
       }; 
       userRoles.Add(r); 
      } 
      //Get all the Roles for our users 
      foreach (var user in userRoles) 
      { 
       user.RoleNames = userManager.GetRoles(userStore.Users.First(s=>s.UserName==user.UserName).Id); 
      } 

      return View(userRoles); 
     } 

视图模型

public class RolesViewModel 
{ 
    public IEnumerable<string> RoleNames { get; set; } 
    public string UserName { get; set; } 
} 

查看:简单的一个

@model IEnumerable<StackOverflow.Models.RolesViewModel> 
@foreach (var user in Model.ToList()) 
{ 
    <div> @user.UserName -- </div> 
    foreach (var role in user.RoleNames) 
    { 
     <div> @role </div> 
    } 
    <br /> 
} 
+0

谢谢,它像一个魅力工作! –

0

我相信你正在使用AspNetUserRoles表来管理用户和角色。 您可以优化用户/角色的显示使用EF和LINQ的网格 -

[GridAction] 
public ActionResult _GetUsers() 

{ 
    var users = from user in xcsnEntities.Users 
       select new 
       { 
        Role = user.Roles.FirstOrDefault().RoleName, 
        IsApproved = user.Membership.IsApproved, 
        Email = user.Membership.Email, 
        UserName = user.UserName 
       }; 

    return View(new GridModel(users)); 
} 
相关问题