Вы просто получаете первую роль пользователя и отображаете ее.Если вы хотите получить все из них, используйте один из методов, которые выдают IEnumerable
.
Например, вы можете сделать что-то вроде этого:
@using System.Security.Claims
@{
Claim[] rolesOfUser = null;
var claimsIdentity = User.Identity as System.Security.Claims.ClaimsIdentity;
if (claimsIdentity != null)
{
rolesOfUser = claimsIdentity.Claims.Where(x => x.Type ==ClaimTypes.Role).ToArray();
}
}
@if (rolesOfUser != null && rolesOfUser.Any())
{
<div class="col-md-9 text-center " id="logoutForm">
<ul class="list-group user-roles">
@foreach(var role in rolesOfUser){
<li class="list-group-item">
@Html.DisplayName("Profile " + role)
</li>
}
</ul>
</div>
}
else
{
<div class="alert alert-danger">
No roles where found!
</div>
}
Здесь вы получаете все заявки от пользователя с типом роли и отображаете их в списке.
ЛУЧШАЯ ПРАКТИКА
Хотя вышеприведенное решение работает, это не самый чистый способ сделать это.Лучше всего будет создать модель на вашем контроллере и передать ее представлению в качестве модели.Эта модель должна содержать только те элементы, которые вы хотите отобразить в представлении.Таким образом, вы не будете смешивать логику для извлечения ролей с логикой представления, и ваш взгляд будет чище.
ОБНОВЛЕНИЕ: см. Эту скрипку для возможной более чистой реализации: https://dotnetfiddle.net/hM7prf
Надеюсь, это поможет!