У меня есть рабочий код для добавления роли пользователю.Теперь я хочу заменить ввод текста выпадающим списком доступными (всеми) ролями в приложении.Теперь у меня есть html-тег @Html.DropDownListFor, поэтому я создал новую ViewModel, содержащую все нужные мне данные, но теперь я нахожусь в тупике.Я пытаюсь foreach и заполняю данные для каждого элемента в списке, но тогда это не работает.Попытки с @ Htm.DropDownListFor имеют тот же эффект.Может кто-то может показать мне правильный путь, как это сделать?Спасибо!
Контроллер:
public async Task<IActionResult> AddRoleToUser(string id, string role)
{
var user = await _userManager.FindByIdAsync(id);
if (await _roleManager.RoleExistsAsync(role))
{
await _userManager.AddToRoleAsync(user, role);
}
return RedirectToAction("UserGroups", new { id });
}
ViewModel:
public class UserGroupsViewModel
{
public ApplicationUser ApplicationUser { get; set; }
public IList<string> RolesList { get; set; }
public IQueryable<ApplicationRole> AllRoles { get; set; }
}
Просмотр
@model AdminMVC.Models.Admin.UserGroupsViewModel
@using (Html.BeginForm("AddRoleToUser", "Admin", new { id = Model.ApplicationUser.Id }))
{
<div classs="input-group">
<p><b>Name new role for user:</b></p>
<input class="form-control form-control-sm" type="text" name="role" placeholder="Role name">
<span class="input-group-btn">
<input type="submit" value="Add Role" class="btn btn-primary btn-sm" />
</span>
</div>
}
Мой вопрос был определен как возможный дубликатДругой вопрос.Но я видел этот вопрос и до сих пор не могу это сделать.Могу ли я изменить свой IList на список, содержащий два значения id и строку?И добавить дополнительную позицию в viewmodel для сохранения результата?