【问题标题】:How to access AspNetUserRoles table in ASP.NET MVC 5如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表
【发布时间】:2019-05-29 13:41:27
【问题描述】:

我在我的项目中使用 Identity 2,我想在视图中显示 AspNetUserRoles 列表。但我无法从 DB 对象访问此表。如何在 ASP.NET MVC 5 中访问此表!? 提前感谢您的帮助

【问题讨论】:

  • 到目前为止你尝试了什么?
  • 它是代码优先的应用程序吗?您是否有一个包含该表的数据库,并且该表是否有超过 2 列?
  • 是的,它是代码-first。它有两列(RoleId 和 UserId)@Ghukas
  • 我没有尝试任何东西,只是想从控制器@SimonPrice 中的 DB 对象访问此表
  • AspNetUserRoles 表是一个映射表。您可以使用AspNetUser 对象或AspNetRole 对象访问该表。假设您要显示所有用户及其角色,您可以通过从 var userRoles = user.AspNetRoles; 获取每个用户的信息来实现。

标签: c# asp.net-mvc asp.net-mvc-5 asp.net-identity asp.net-identity-2


【解决方案1】:

这将为您提供所有用户及其角色的列表。

给出你的上下文名称

using(var context = new YourContextName())
{
    var usersAndRoles = new List<UserRoleModel>(); // Adding this model just to have it in a nice list.
    var users = context.AspNetUsers;

    foreach(var user in users)
    {        
        foreach(var role in user.Roles)
        {
            usersAndRoles.Add(new UserRoleModel
            {
                UserName = user.UserName,
                RoleName = role.Name
            });
        }
    }
}

我没有测试过代码,可以有更优化的方法。

【讨论】:

    【解决方案2】:

    您需要在要检索用户角色的视图上导入以下模型。

    @model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>   
    

    然后你只需要对模型做一个 foreach 并获取他的 Name 属性(item.Name)它就会返回并显示例如管理员、员工等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-08
      • 2021-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多