Окончательное решение:SelectList выбранное значение
public class UpdateUser
{
public IEnumerable<string> SelectedRoles { get; set; }
public IEnumerable<SelectListItem> DropDownRoles { get; set; }
}
...
var roles = context.Roles.Select(x => x.RoleName).ToList();
UpdateUser userToUpdate = new UpdateUser
{
SelectedRoles = user.Roles.Select(x => x.RoleName),
DropDownRoles = new SelectList(roles, user.Roles)
};
HTML
@Html.ListBoxFor(x => x.SelectedRoles, Model.DropDownRoles)
============ =============
У меня есть выпадающий список для отображения пользовательских ролей, как так:
HTML
@Html.TextBoxFor(x => x.Roles)
@Html.DropDownList("roles", ViewData["roles"] as SelectList)
Контроллер
var user = context.Users.Include(x => x.Roles).Where(x => x.UserId == id).FirstOrDefault();
ViewData["roles"] = new SelectList(context.Roles, "RoleId", "RoleName");
Проблема заключается в том, что я не могу понять, как я мог установить выбранное значение в раскрывающемся списке. Я подумал, что, возможно, я мог бы использовать Lambda Expression, чтобы поставить соответствующую роль в верхней части списка, а затем в алфавитном порядке.
var roles = context.Roles
.ToList()
.OrderBy(? matching role then other selectable roles ?)
Должно быть, проще?
Что если пользователь имеет более чем 1 роль? 'public IEnumerable SelectedRole {get; задавать; } 'Итак, для каждой роли пользователя у нас есть новый раскрывающийся список. –
user1883004
Точно: 'public IEnumerable SelectedRoles {get; задавать; } '. А затем используйте 'Html.ListBoxFor (x => x.SelectedRoles, Model.Roles)' вместо 'Html.DropDownListFor (x => x.SelectedRole, Model.Roles)' в вашем представлении, чтобы разрешить множественный выбор , –
Спасибо за помощь до сих пор, почти там, мне просто нужно установить выбранные значения, Позвольте мне редактировать OP. – user1883004