从管理员角色的用户那里获取下拉列表的问题

Problem with getting dropdown list from users in role admin

你能帮我从 ViewBag 列表创建 Html.DropdownList 吗? 当我使用以下代码时出现错误,我无法将列表转换为 IEnumerable<SelectListItem>

var allUsers = db.Users.ToList();
var adminUsers = allUsers.Where(u => u.Roles.Select(r =>r.RoleId).Contains("1bafec08-fc36-41f6-a3f1-cc9a297e7481")).ToList();

ViewBag.Role = adminUsers;

这种显示方式不行:

@Html.DropDownList("PersonAssigned",(IEnumerable<SelectListItem>)ViewBag.Role, "Wybierz pracownika:", new { @class = "form-control" })

这也不是:

@Html.DropDownList("PersonAssigned", ViewBag.Role as SelectList, new { @class = "form-control" })

您需要在将其放入 ViewBag 之前创建一个 SelectList,例如:

ViewBag.Role = new SelectList(adminUsers,"RoleId","RoleName");

并且在您的 DropDownList 助手视图中使用:

ViewBag.Role as SelectList

假设 RoleName 是您 table 中的列名,否则您需要将您在 table 中的列名作为角色文本。

缺少所需类型的映射,同时考虑优化您的数据库查询

var roleId = Guid.Parse("1bafec08-fc36-41f6-a3f1-cc9a297e7481");
var adminUsers = db.Users.Where(x => x.Roles.Any(y => y.RoleId == roleId))
    .ToList()
    .Select(x => new SelectListItem() 
    {
        Text = x.RoleName,
        Value = x.RoleId
    })
    .ToList();

这将使该代码能够工作

@Html.DropDownList("PersonAssigned",(IEnumerable<SelectListItem>)ViewBag.Role, "Wybierz pracownika:", new { @class = "form-control" })