2017-03-05 64 views
3

我想列出所有我的用户在视图中。我也想列出属于用户的角色。但我只是可以获得用户的角色id。但我想列出所有角色名称而不是角色ID。我怎样才能做到这一点? 这里是我的代码:用户在列表中的角色名称asp.net身份

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

PS我使用Asp.net身份

+1

“我遇到了一些问题”请描述问题,因为我们无法猜测它们可能是什么。另外,请在您的视图中提供“Model”的类型。 – spender

+0

@FatikhanGasimov你使用的是entityframework吗? – tmg

+1

@tmg是的,我正在使用ef –

回答

0

如果你试图让每个用户的角色,是不是你应该只是从您的var user访问它?换句话说,你只需要使用user.Roles

既然你已经获取的用户列表命名用户变量下......那么首先,如果您要保存列表,阵列或任何收集的形式,你必须以复数形式命名你的变量。你的情况应该是这样的:

var users = await _context.Users.Include(x=> x.Roles).ToListAsync(); 

现在回到要点......既然你已经使用角色的Include获取的users,你只需将它应该是这样的,假设你的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> 
} 
相关问题