2017-03-05 109 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> 
} 
相關問題