Я пытаюсь настроить авторизацию на основе ролей в ASP.NET Identity. Я хочу сделать так, чтобы пользователи Admin могли видеть список пользователей и их роли (на странице Index) и изменять роли отдельных пользователей (на странице редактирования).Просмотр ролей пользователя показывает идентификатор роли вместо имени роли
Вот мой контекст:
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 стол:
На основе этих таблиц, пользователь имеет роль "Viewer". Однако, вместо того чтобы показывать имя роли, вид показывает Role ID:
Как мне сделать это показать имя Role вместо (в данном случае «просмотра»)?
Да, я в конечном итоге делает что-то вдоль этих линий. Я отвечу на ваш ответ. –
@EgeErsoz улучшенный ответ – tmg
Raely хороший путь! –