asp.net-mvc - 在 MVC Asp.net 身份中具有角色的用户列表

标签 asp.net-mvc asp.net-identity asp.net-roles

我想列出在我的网站上注册的所有用户及其角色。

身份证 |姓名 |角色

1 | ABC |管理员

2 |防御 |用户

像这样,我制作了角色 Controller ,其中列出了所有角色。

 public ActionResult Index()
    {
        var roles = context.Roles.ToList();
        return View(roles);
    }

在 View 中
@model IEnumerable<Microsoft.AspNet.Identity.EntityFramework.IdentityRole>
@{
    ViewBag.Title = "Index";
}    
<div>
    @foreach (var role in Model)
    {
        <p>
            <strong>@role.Name | </strong>
        </p>
    }
</div>

这将列出所有角色,但我想要用户的角色列表。

请给出任何解决方案,谢谢

最佳答案

创建一个名为 UserViewModel 的新类。这将充当您页面的 View 模型。

public class GroupedUserViewModel
{
    public List<UserViewModel> Users {get; set;}
    public List<UserViewModel> Admins {get; set;}
}

public class UserViewModel
{
    public string Username {get; set;}
    public string Roles {get; set;}
}

在 Controller 的 action 方法中,获取用户列表及其角色并将其映射到 UserViewModel。
public ActionResult Index()
{
    var allusers = context.Users.ToList();
    var users = allusers.Where(x=>x.Roles.Select(role => role.Name).Contains("User")).ToList();
    var userVM = users.Select(user=>new UserViewModel{Username = user.FullName, Roles = string.Join(",", user.Roles.Select(role=>role.Name))}).ToList();

    var admins = allusers.Where(x=>x.Roles.Select(role => role.Name).Contains("Admin")).ToList();
    var adminsVM = admins.Select(user=>new UserViewModel{Username = user.FullName, Roles = string.Join(",", user.Roles.Select(role=>role.Name))}).ToList(); 
    var model = new GroupedUserViewModel{Users = userVM, Admins = adminsVM};

    return View(model);
}

然后在 View 中使用新模型。确保在此处定义 View 模型的位置使用正确的命名空间。
@model Models.GroupedUserViewModel
@{
    ViewBag.Title = "Index";
}    
<div>
    @foreach (var user in Model.Admins)
    {
        <p>
            <strong>@user.Username | @user.Roles </strong>
        </p>
    }

    @foreach (var user in Model.Users)
    {
        <p>
            <strong>@user.Username | @user.Roles </strong>
        </p>
    }
</div>

关于asp.net-mvc - 在 MVC Asp.net 身份中具有角色的用户列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27758990/

相关文章:

c# - 根据用户角色动态显示内容

c# - ASP.NET 中的自定义角色

c# - Web API 身份验证响应属性

c# - 异步下载文件到客户端

asp.net-mvc - 获取 ASP.NET MVC 中当前操作/ Controller 的自定义属性列表

c# - 如何使用原始包集合到区域 MVC5

c# - 当被授权属性列为允许时,角色返回未授权

asp.net-mvc - 如何从 asp.net mvc 应用程序传播身份以访问 tfs 服务器?

c# - 在 ASP.NET 的 IdentityUserRole 2.0 中获取角色名称

asp.net - 使用 BeginForm 将表单数据发送到 ASP.NET MVC API Controller