namespace Sandbox.Web.Models
public string FirstName { get; set; }
public string LastName { get; set; }
public Guid UserId { get; set; }
namespace Sandbox.Web.ViewModels
public class UserViewModel
public UserViewModel(List<IdentityRole> listOfRoles, UserProfile userProfile)
ListOfRoles = listOfRoles;
UserProfile = userProfile;
public List<IdentityRole> ListOfRoles { get; set; }
public List<string> SelectedRoles { get; set; }
public UserProfile UserProfile { get; set; }
namespace Sandbox.Web.Controllers
public class UsersController : Controller
private readonly RoleManager<ApplicationUser> _roleManager;
private readonly UserManager<ApplicationUser> _userManager;
public UsersController(UserManager<ApplicationUser> userManager, RoleManager<ApplicationUser> roleManager)
_userManager = userManager;
_roleManager = roleManager;
public async Task<IActionResult> Edit(Guid id)
var allRoles = await _roleManager.Roles.ToListAsync();
var user = await _userManager.FindByIdAsync(id);
var currentUserRoles = await _userManager.GetRolesAsync(user);
var availableRoles = allRoles.Except(currentUserRoles).ToList();
var viewModel = new UserViewModel(availableRoles, user);
public async Task<IActionResult> Edit(UserViewModel model)
var user = await _userManager.FindByIdAsync(model.UserProfile.UserId);
var result = await _userManager.AddToRolesAsync(user, model.SelectedRoles);