2014-11-23 27 views
4

我想要获取我的应用程序中所有角色的列表。我看了以下帖子Getting All Users...和其他来源。这是我的代码,我认为是我应该做的。试图获得身份中的所有角色

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

不过,我发现了以下错误:无法类型GenericList(IdentityRole)隐式转换为List(string)。有什么建议么?我正在尝试获取列表,以便我可以在注册页面上填充下拉列表以将用户分配给特定角色。使用ASPNet 4.5和身份框架2(我认为)。

PS我也试过了Roles.GetAllRoles方法没有成功。

回答

12

查看您的参考链接并自问,很明显角色管理器(roleMngr)是IdentityRole的类型,因此如果您尝试获取角色列表,角色必须是相同的类型。

使用var insted List<string>或使用List<IdentityRole>

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

var roles = roleMngr.Roles.ToList(); 

希望这有助于。

2

如果它是你后弦角色名称的列表,你可以做

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

我会亲自使用VAR,但这里包含的类型说明返回类型。

0

添加此项以帮助其他可能具有自定义类型Identity(不是默认string)的人。 如果你有,比方说int,您可以使用此:

​​