使用ASP.NET MVC5用户身份,我试图在 View 中显示IdentityUser的角色名称。

似乎Identity用户具有Roles属性,该属性表示IdentityUserRole而不是IdentityRole的集合。区别在于IdentityUserRole表示IdentityUserIdentityRole之间的关联,而IdentityRole是实际的Role模型 [+] 。显然,在IdentityUser和IdentityRole之间没有定义导航。所以我们得到的只是IdentityUserRole中的RoleId。

  • 是否有一种简单的方法来获取角色名称?
  • 使用Fluent API,我们可以在IdentityRoleIdentityUserRole之间定义虚拟导航属性来轻松获取名称
    在整个项目中?
  • 如果是设计使然,不让我们直接获取IdentityRole有什么好处?
  • 最佳答案

    您可以使用角色管理器来选择身份中的用户角色

    var roleManager = new RoleManager<IdentityRole>(new RoleStore<IdentityRole>(this.dbcontext));
    

    从用户那里获得用户角色,然后从该角色中选择名称
    roleManager.FindById(user.RoleId).Name
    

    10-01 17:53