Используя идентификатор пользователя ASP.NET MVC5, я пытаюсь отобразить имена ролей IdentityUser.Как получить имена ролей IdentityUser в представлении?
Похоже, что у пользователя Identity есть свойство Roles, которое представляет собой набор IdentityUserRole
, а не IdentityRole
. Отличие состоит в IdentityUserRole
представляет ассоциацию между IdentityUser
и IdentityRole
, в то время как IdentityRole
является фактической Role
моделью [+]. По-видимому, между IdentityUser и IdentityRole нет навигации. Итак, все, что мы получаем, это RoleId от IdentityUserRole
.
- Есть ли простой способ получить имена ролей?
- Используя Fluent API, мы можем определить свойство виртуальной навигации между
IdentityRole
иIdentityUserRole
, чтобы получить имя легко по всему проекту? - Если это по дизайну, в чем преимущество, не позволяя нам получить
IdentityRole
прямо?
Я хотел бы предложить вам получить роли в контроллере/действии и передать его в представление как свойство, то есть часть модели, которую вы передаете для просмотра. Если нет, вам может потребоваться расширить свойства IPrincipal или IIdentity для включения ролей, тогда вы можете получить что-то вроде HttpContext.Current.User.Identity.Roles. – DSR
Я предполагаю, что вы нашли ответ на этот вопрос, хотя здесь ничего нет, поэтому я хотел бы знать, что это такое. На этом этапе я храню словарное представление объектов IdentityRole в ViewBag и обращается к ним с помощью IdentityUserRole.RoleId в коде представления. Это работает, но я не в восторге от этого. –