我需要返回身份标签中的所有角色以创建下拉列表。
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);
}
}
我该怎么做?
修改
/ ********************************************** ************************************************** ******* /
答案 0 :(得分:2)
通过设置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
即可获得所有角色。
这个答案包含了使其工作所需的所有步骤,但如果你仍然不清楚这个过程,请参考上面nuget包的链接。