Mr Coder
Mr Coder

Reputation: 847

can't return roles in AspNetRoles

i need to return all role in identity tabel for create a dropdown list .

    public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(RoleStore<IdentityRole> store)
        : base(store)
    {

    }
    public static ApplicationRoleManager Create(IOwinContext context)
    {
        var Store = new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>());
        // Configure validation logic for usernames
        return new ApplicationRoleManager(Store);
    }
}

how should i do this ?

Edit

enter image description here

/*******************************************************************************************************/

Upvotes: 1

Views: 331

Answers (1)

Nico
Nico

Reputation: 3489

The process to get all roles via setting up ApplicationRoleManager is the following (as per Identity samples provided by Microsoft found here).

Add the code below to your IdentityConfig.cs

public class ApplicationRoleManager : RoleManager<IdentityRole>
{
    public ApplicationRoleManager(IRoleStore<IdentityRole, string> roleStore)
        : base(roleStore)
    {
    }

    public static ApplicationRoleManager Create(IdentityFactoryOptions<ApplicationRoleManager> options, IOwinContext context)
    {
        return new ApplicationRoleManager(new RoleStore<IdentityRole>(context.Get<ApplicationDbContext>()));
    }
}

Then initialize the single instance per Owin context of your RoleManager in Startup.Auth.cs:

app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);

In your controller where you want to get all roles, do the following:

private ApplicationRoleManager _roleManager;
public ApplicationRoleManager RoleManager
{
    get
    {
        return _roleManager ?? HttpContext.GetOwinContext().Get<ApplicationRoleManager>();
    }
    private set
    {
        _roleManager = value;
    }
}

After that you can simply use RoleManager.Roles in any of your action methods to get all roles.

This answer contains all the steps you need to get this to work but refer to the link to the nuget package above if you're still unclear on the process.

Upvotes: 2

Related Questions