2017-08-16 1 views
0

bekam ich meine Users die in zwei Kategorien unterteilt: Student und Professor, ich versuche alle Benutzer innerhalb der Professor Rolle zu bekommen, aber ich weiß nicht, was Ich mache falsch.Wie alle Benutzer von einer bestimmten Rolle bekommen

Dies ist der Code, wobei ich versuche, das zu tun:

RoleManager<IdentityRole> roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(context)); 
List<IdentityUserRole> professors = roleManager.FindByName("Professor").Users.ToList(); 

List<AppUser> users = new List<AppUser>(); 

foreach(IdentityUserRole iuser in professors) 
{ 
    AppUser user = manager.FindById(iuser.UserId); 
    users.Add(user); 
} 

Professors aus irgendeinem Grunde null bleibt. Kann mir jemand helfen?

Antwort

0

Ich zweifle, ob es dort eine bereits in Funktion für diesen Zweck gebaut ist, aber Sie können auf diese Weise Benutzer erhalten:

public async Task GetUsersInRole() 
{ 
    ApplicationDbContext context = new ApplicationDbContext(); 
    var roles = context.Roles.Where(r => r.Name == "Professor"); 
    if (roles.Any()) 
    { 
     var users = await UserManager.Users.ToListAsync(); 
     var result = (from c in users 
         where c.Roles.Any(r => r.RoleId == roles.First().Id) 
         select c); 
    } 
} 

Und rufen Sie die Methode wie folgt aus:

public async Task<ActionResult> Index() 
{ 
    await GetUsersInRole(); 
    return View(); 
} 
+0

ich nur versuchte das. Und ich bekomme immer noch ein leeres json-Array. – RottenCheese

+0

Mein Ergebnis auf Postman ist das folgende: []. Und ja, ich habe nur überprüft, ob der Rollenname richtig geschrieben ist. Ich habe sogar versucht, es durch ID zu finden, aber dasselbe passiert auch. – RottenCheese

+0

@RottenCheese Sind Sie sicher, dass Ihre Rollennamen "Professor" sind? –

Verwandte Themen