gpt4 book ai didi

c# - 如何迭代 IEnumerable 中的角色并在 razor View 中显示角色名称

转载 作者:行者123 更新时间:2023-12-03 03:11:28 26 4
gpt4 key购买 nike

正在使用具有 MVC 和 razor View 的 Identity 2.1.0。我的一个 View 通过此 GET Controller 操作获取所有用户的列表:

public async Task<ActionResult> Users()
{
return View(await UserManager.Users.ToListAsync());
}

在 View 中,有一个 foreach 迭代每个用户并显示常用信息,如电子邮件地址、用户名等。我想知道是否还有一种方法可以迭代每个用户的角色,以便我可以显示每个用户的角色成员身份,如下所示:

Customer
Employee

我一直没能弄清楚这一点。我的部分问题是我在 razor View 中没有任何 Intellisense,并且无法在 Google 上找到任何有用的信息。

View 模型是@model IEnumerable<XXXX_My_App.Models.ApplicationUser> 。 ApplicationUser 有一个 IdentityUser 基类。

最佳答案

最简单的方法是创建一个自定义 ViewModel,其中包含用户本身以及他所属的角色。实现可能如下所示:

Controller

public async Task<ViewResult> Users()
{
var users = UserManager.Users;
var model = new Collection<UserRoleViewModel>();

foreach (var user in users)
{
var roles = await UserManager.GetRolesAsync(user.Id);
var rolesCollection = new Collection<IdentityRole>();

foreach (var role in roles)
{
var role = await RoleManager.FindByNameAsync(roleName);
rolesCollection.Add(role);
}

model.Add(new UserRoleViewModel { User = user, Roles = rolesCollection });
}

return View("Users", model);
}

UserRoleViewModel

public class UserRoleViewModel
{
public ApplicationUser User { get; set; }

public Collection<IdentityRole> Roles { get; set; }
}

这样,您就可以在 View 中使用以下模型来迭代适当的属性

@model ICollection<YourProject.Models.UserRoleViewModel>

关于c# - 如何迭代 IEnumerable<ApplicationUser> 中的角色并在 razor View 中显示角色名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24588758/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com