При просмотре ролей пользователей вместо имени роли отображается идентификатор роли.
Я пытаюсь настроить авторизацию на основе ролей в ASP.NET Identity. Я хочу сделать так, чтобы пользователи-администраторы могли видеть список пользователей и их роли (на странице индекса) и изменять роли отдельных пользователей (на странице редактирования).
Вот мой контекст:
modelBuilder.Entity<IdentityUser>()
.HasKey<string>(k => k.Id)
.ToTable("Users");
modelBuilder.Entity<IdentityUserRole>()
.HasKey(r => new { r.RoleId, r.UserId })
.ToTable("UserRoles");
modelBuilder.Entity<IdentityUserLogin>()
.HasKey<string>(f => f.UserId)
.ToTable("UserLogins");
modelBuilder.Entity<IdentityRole>()
.ToTable("Roles");
Мое действие по индексированию в UsersController.cs:
public ActionResult Index()
{
return View(db.Users.Include(i => i.Roles).ToList());
}
Индекс просмотра:
@model List<Microsoft.AspNet.Identity.EntityFramework.IdentityUser>
//stuff
@foreach (var item in Model)
{
<tr class="index-item" data-href="@Url.Action("Details", "Users", new { id=item.Id })">
<td>
@Html.DisplayFor(modelItem => item.Email)
</td>
<td>
@Html.DisplayFor(modelItem => item.Roles)">
</td>
<td class="index-links">
//stuff
</td>
</tr>
}
</table>
Таблица моих ролей:
Моя таблица UserRoles:
На основании этих таблиц пользователь имеет роль «Просмотрщик». Однако вместо отображения имени роли в представлении отображается идентификатор роли:
Как мне сделать так, чтобы вместо этого отображалось имя роли (в данном случае «Просмотрщик»)?