如何在 Razor 中获取应用用户的角色?



对于我的用户列表视图,我像这样发送一个 AppUser : IdentityUser 的列表:

public AccountAdminController(UserManager<AppUser> userManager,
RoleManager<IdentityRole> rolesManager)
{
_userManager = userManager;
_roleManager = rolesManager;
}
// List Users
public ViewResult Index()
{
return View(_userManager.Users);
} 

我在视图中呈现用户,如下所示:

@model IEnumerable<AppUser>
foreach (AppUser user in Model)
{
<tr>
<td>@user.Id</td>
<td>@user.UserName</td>
<td>Role</td>
<td>@user.Email</td>
<td>
<a id="editModal" data-toggle="modal" data-target="#modal_box"
class="btn btn-sm btn-primary"
asp-action="EditUser" asp-route-id="@user.Id">Edit</a>
<a id="deleteConfirmModal" data-toggle="modal" data-target="#modal_box"
class="btn btn-sm btn-danger"
asp-action="DeleteConfirm" asp-route-id="@user.Id">Delete</a>
</td>
</tr>
}

如何在角色列中获取每个用户的角色?

每个用户的角色集合为空,计数为 0,即使我知道用户具有角色。 每个用户只有一个角色,所以我需要拉@user。Roles.FirstOrDefault().名字。

但它不存在。 我该如何解决这个问题?

更新 1

如果我使用包含以下内容执行此操作:

public ViewResult Index()
{
return View(_userManager.Users.Include(u => u.Roles));
} 

然后在视图中:

<td>@user.Roles</td>

它呈现如下:

System.Collections.Generic.List`1[Microsoft.AspNetCore.Identity.EntityFrameworkCore.IdentityUserRole`1[System.String]]

现在,如果我尝试扩展剃须刀线:

@user.Roles.FirstOrDefault().

我在智能感知中唯一得到的是角色ID,没有角色名称。

你可以做这样的事情。 尚未测试代码,因此可能需要一些返工,但应该可以让您朝着正确的方向前进。

在您的视图模型中

public class UserViewModel
{
public ApplicationUser User { get; set; }
public List<Role> Roles { get; set; }
}

在控制器中

var usersViewModel = new List<UserViewModel>();
var roles = db.Roles.ToList();
foreach (var user in db.Users)
{
usersViewModel.Add(new UserViewModel
{
User = user,
Roles = roles.Where(m => m.Users.Any(x => x.UserId == User.Id).ToList();
});
}
return View(usersViewModel);
**try This**
@if (Request.IsAuthenticated)
{
var db = new ApplicationDbContext();
var UserID = User.Identity.GetUserId();
var CurrentUser = db.Users.Where(a => a.Id == UserID).SingleOrDefault();
var roleId = CurrentUser.Roles.FirstOrDefault().RoleId.ToString();
var roleName = db.Roles.Find(roleId).Name.ToString();
}

相关内容

  • 没有找到相关文章

最新更新