如何在 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 中的多个层