如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表

Posted

技术标签:

【中文标题】如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表【英文标题】:How to access AspNetUserRoles table in ASP.NET MVC 5 【发布时间】: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; 获取每个用户的信息来实现。 【参考方案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)它就会返回并显示例如管理员、员工等

【讨论】:

以上是关于如何在 ASP.NET MVC 5 中访问 AspNetUserRoles 表的主要内容,如果未能解决你的问题,请参考以下文章

如何使用asp.net mvc razor在视图中访问全局资源

如何将数据从表示层传递到业​​务逻辑层? (ASP.NET MVC 5)

如何在 ASP.NET MVC 中使用 asp-controller 或 asp-action 访问我的 url 中的多个层

如何在 ASP.NET Core 5 MVC (.NET 5) 中获取记录的用户数据?

ASP.NET MVC 5 授权问题

如何在 ASP.NET 5 MVC 6 (vNext) 中定义 Identity 的密码规则?