显示角色和应用程序用户的列表视图

本文关键字:列表 视图 用户 应用程序 角色 显示 | 更新日期: 2023-09-27 18:22:02

我是MVC5的新手,正在尝试显示用户详细信息和他们所处角色的名称的列表视图。我已经使用MVC Identity设置了角色。

下面是我的ViewModel

 public class UserRoleViewModel
{
    public string UserRoleVMId { get; set; }
    public string Title { get; set; }
    public string FirstName { get; set; }
    public string Surname { get; set; }
    public string Email { get; set; }
    public string Role { get; set; }
    public bool AccountEnabled { get; set; }

}

我的控制器:

 public ActionResult Index()
    {
        var model = (from d in db.Users
                     select new UserRoleViewModel()
                     {
                         UserRoleVMId = d.Id,
                         Title = d.Title,
                         FirstName = d.FirstName,
                         Surname = d.Surname,
                         Email = d.Email,
                         AccountEnabled = d.AccountEnabled,
                         Role = d.Role.Name
                     }).ToList();
        return View(model);
    }

我不确定如何显示角色名称,并且收到错误消息

does not contain the definition for Role and no extension method Role

Role = d.Role.Name

如有任何帮助,将不胜感激

感谢

显示角色和应用程序用户的列表视图

您可以使用GetRoles方法:

 viewModel.RolesForThisUser = UserManager.GetRoles(userId).ToList();

当您想要显示一个用户的详细信息时,这很有用。

您应该使用属性Roles,因为一个用户可以有多个角色:

public ActionResult Index()
    {
       using(var context = new IdentityDbContext()){
    viewModel =
        context.Users
        .Include("Roles")
        .Select(u =>
            new UserRoleViewModel { 
                UserRoleVMId = u.Id, 
                Title = u.Title,
                FirstName = u.FirstName,
                Surname = u.Surname,
                Email = u.Email,
                AccountEnabled = u.AccountEnabled,
                Role = u.Roles.First().Role.ToString() 
            }
        ).ToList();
     }
        return View(viewModel);
    }

您可以使用此代码

return view(db.Users.ToList());

在你看来,使用

@model IEnumerable<YourProjectName.Models.Users>

并使用此foreach显示内容

@foreach(var item in Model){<p>@item.Title</p> and etc }