列表asp.net标识中用户的角色名称

时间:2017-03-05 17:11:08

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

我想在视图中列出我的所有用户。我还想列出属于用户的角色。但我只能为用户获得角色的身份。但我想列出我的所有角色名称而不是角色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身份

1 个答案:

答案 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>
}