2016-01-21 7 views
2

Im пытается выяснить, как заставить всех пользователей и их роли в хорошую организованную таблицу увидеть много разных способов, но никто не работал для меня , я поступил по дороге по крайней мере ... кто-нибудь, кто может мне помочь?Получите всех пользователей и их роли, которые они получили в таблице. 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(); 

и, наконец, с помощью этого кода я получаю все пользователи идентификаторами

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

Но как я могу получить всех пользователей с их ролями? я действительно не могу понять это

+0

У вас есть некоторые таблицы отображения betwee n пользователей и роли? –

+0

@AlksandrIvanov Я так не думаю, однако в моем роли в качестве администратора я могу проверить, какие роли у пользователей есть и т. Д., Следуйте этому руководству https://andersnordby.wordpress.com/2014/11/28/asp-net-mvc-4 -5-owin-simple-role-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); 
     } 

ViewModel

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

 Смежные вопросы

  • Нет связанных вопросов^_^