我想在视图中列出我的所有用户。我还想列出属于用户的角色。但我只能为用户获得角色的身份。但我想列出我的所有角色名称而不是角色ID。我怎样才能做到这一点? 这是我的代码:
public async Task<ActionResult> Index()
{
var user = await _context.Users.Include(x=> x.Roles).ToListAsync();
ViewBag.Roles = await _context.Roles.ToListAsync();
return View(user);
}
在视图中
@model List<Projectname.Web.Models.ApplicationUser>
@foreach (var c in Model)
{
<tr>
<td>@c.UserName</td>
<td>@c.Email</td>
<td>@c.LockoutEnabled</td>
@foreach (var role in c.Roles)
{
<td>@role.RoleId</td>
}
</tr>
}
p.s我正在使用Asp.net身份
答案 0 :(得分:0)
如果您尝试获取每个用户的角色,您是否应该只是从var user
访问它?换句话说,您只需要使用user.Roles
由于您已经在名为 user 的变量下获取了一个用户列表...首先,如果要保存列表,数组或任何形式的集合,则必须为变量命名以复数形式。在你的情况下,它应该看起来像:
var users = await _context.Users.Include(x=> x.Roles).ToListAsync();
现在回到主要观点......现在您已经使用users
角色获取了Include
,只要它看起来像这样,假设您的Model
是用户集合。
@foreach (var user in Model)
{
<tr>
<td>@user.UserName</td>
<td>@user.Email</td>
<td>@user.LockoutEnabled</td>
@foreach (var role in user.Roles)
{
<td>@role.Id</td>
<td>@role.Name</td>
}
</tr>
}