Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Trying to get all roles in Identity

I am trying to get a list of all the roles in my application. I have looked at the following post Getting All Users... and other sources. Here is my code which I think is what I am supposed to do.

var roleStore = new RoleStore<IdentityRole>(context)
var roleMngr  = new RoleManager<IdentityRole>(roleStore);
List<string> roles = roleMngr.Roles.ToList();

However, I’m getting the following error: Cannot implicitly convert type GenericList(IdentityRole) to List(string). Any suggestions? I am trying to get the list so I can populate a dropdown list on a registration page to assign a user to a particular role. Using ASPNet 4.5 and identity framework 2 (I think).

PS I’ve also tried the Roles.GetAllRoles method with no success.

like image 461
physics90 Avatar asked Nov 23 '14 14:11

physics90


People also ask

How do you get all roles in identity?

Use var insted of List<string> or use List<IdentityRole> . var roleStore = new RoleStore<IdentityRole>(context); var roleMngr = new RoleManager<IdentityRole>(roleStore); var roles = roleMngr. Roles. ToList();


2 Answers

Looking at your reference link and question it self, it is clear that the role manager (roleMngr) is type of IdentityRole, so that roles has to be the same type if you trying to get the list of roles.

Use var insted of List<string> or use List<IdentityRole>.

var roleStore = new RoleStore<IdentityRole>(context);
var roleMngr = new RoleManager<IdentityRole>(roleStore); 

var roles = roleMngr.Roles.ToList();

Hope this helps.

like image 100
DSR Avatar answered Sep 19 '22 13:09

DSR


If it's a list of string role names you're after, you could do

List<string> roles = roleMngr.Roles.Select(x => x.Name).ToList();

I would personally use var, but included the type here to illustrate the return type.

like image 38
Shawson Avatar answered Sep 18 '22 13:09

Shawson