不能 return AspNetRoles 中的角色

can't return roles in AspNetRoles

我需要 return 标识表中的所有角色才能创建下拉列表。

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

我该怎么做?

编辑

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

通过设置 ApplicationRoleManager 获取所有角色的过程如下(根据 Microsoft 提供的身份示例发现 here)。

将下面的代码添加到您的 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>()));
    }
}

然后在 Startup.Auth.cs:

中初始化 RoleManager 的每个 Owin 上下文的单个实例
app.CreatePerOwinContext<ApplicationRoleManager>(ApplicationRoleManager.Create);

在您想要获取所有角色的控制器中,执行以下操作:

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

之后,您可以在任何操作方法中简单地使用 RoleManager.Roles 来获取所有角色。

此答案包含您需要的所有步骤,但如果您对过程仍不清楚,请参阅上面的 link 到 nuget 包。