如何在mvc 5中获得具有角色的用户



我只想在mvc中的角色用户中获得,我尝试了所有方法。正如您所知,AspNetUserRoles是一个映射表(多对多),因此它不是在EDMX中生成的(根据设计,它没有主键)。此外,我们不能使用角色表)。请考虑一下我的型号。

这是我最后一次尝试:

    public async Task<ActionResult> Roles()
    {
        var list = context.Users.Include(u => u.Roles);
        var user = new List<ApplicationUser>();
        foreach(var u in list)
        {
            if(u.Roles!= null)
            {
                user.Add(u);
            }
        }     
        return View(user);
    }

这是我的观点:

    @model IEnumerable<Site.Models.ApplicationUser>
      @{
        Layout = null;
       }
       <h2>List of users with Roles:</h2>
       <table class="table">
      <tr>
       <th>
           @Html.DisplayNameFor(model => model.UserName)
       </th>
       <th>
          @Html.DisplayNameFor(model => model.Email)
       </th>
       <th>
          @Html.DisplayNameFor(model => model.Roles)
      </th>
   </tr>
   @foreach (var item in Model)
   {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.UserName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.Email)
        </td>
        <th>
            @Html.DisplayFor(modelItem => item.Roles)
        </th>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id = item.Id }) |
            @Html.ActionLink("Details", "Details", new { id = item.Id }) |
            @Html.ActionLink("Delete", "Delete", new { id = item.Id })
        </td>
    </tr>
  }
   </table>

试试这个:

    var usersList = new List<ApplicationUser>();
    foreach (ApplicationUser user in UserManager.Users)
    {
        var roles = await UserManager.GetRolesAsync(user.Id);
        if(roles.contains("Admin"))
        {
            usersList.Add(user);
        }
    }

这个应该只返回具有管理员角色的用户。我希望它能有所帮助。

我认为您应该根据特定的角色进行查询。因为如果以后添加更多的角色,您的应用程序就会出现问题。

public async Task<ActionResult> Roles()
    {
        var user= context.Users.Include(u => u.Roles).Where(u=>u.Roles.Any(r=>r.Name=="RoleName")).ToList();
        return View(user);
    }

相关内容

  • 没有找到相关文章

最新更新