Проблема с получением выпадающего списка от пользователей в роли администратора - PullRequest
0 голосов
/ 21 декабря 2018

Можете ли вы помочь мне с созданием Html.DropdownList из ViewBag списка?Когда я использую следующий код, возникает ошибка, из-за которой я не могу преобразовать список в 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" })

Ответы [ 2 ]

0 голосов
/ 21 декабря 2018

Сопоставление с требуемым типом отсутствует, также подумайте об оптимизации вашего запроса к базе данных

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" })
0 голосов
/ 21 декабря 2018

Вам нужно создать список SelectList перед тем, как поместить его в ViewBag, например:

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

и, по вашему мнению, в использовании помощника DropDownList:

ViewBag.Role as SelectList

Предполагая, что RoleNameимя столбца в вашей таблице, в противном случае вам нужно поместить имя столбца в таблице для текста роли.

...