public async Task <ActionResult> Edit([Bind(Include = "Email,Id,LastName,FirstName,PhoneNumber,UserName,UniqueNumber")] AdminViewModels.EditUserViewModel editUser, params string[] selectedRole) { if (ModelState.IsValid) { var user = await UserManager.FindByIdAsync(editUser.Id); if (user == null) { return(HttpNotFound()); } user.Email = editUser.Email; user.FirstName = editUser.FirstName; user.LastName = editUser.LastName; user.PhoneNumber = editUser.PhoneNumber; user.UserName = editUser.UserName; user.UniqueNumber = editUser.UniqueNumber; var userRoles = await UserManager.GetRolesAsync(user.Id); selectedRole = selectedRole ?? new string[] { }; var result = await UserManager.AddToRolesAsync(user.Id, selectedRole.Except(userRoles).ToArray <string>()); if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.First()); return(View()); } result = await UserManager.RemoveFromRolesAsync(user.Id, userRoles.Except(selectedRole).ToArray <string>()); if (!result.Succeeded) { ModelState.AddModelError("", result.Errors.First()); } return(RedirectToAction("Index")); } else { // ModelState.AddModelError("", user.Errors.First()); } return(View()); }
// // GET: /Users/Edit/1 public async Task <ActionResult> Edit(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } var user = await UserManager.FindByIdAsync(id); if (user == null) { return(HttpNotFound()); } var userRoles = await UserManager.GetRolesAsync(user.Id); var userToEdit = new AdminViewModels.EditUserViewModel() { Id = user.Id, Email = user.Email, FirstName = user.FirstName, LastName = user.LastName, PhoneNumber = user.PhoneNumber, UserName = user.UserName, UniqueNumber = user.UniqueNumber, RolesList = RoleManager.Roles.ToList().Select(x => new SelectListItem() { Selected = userRoles.Contains(x.Name), Text = x.Name, Value = x.Name }) }; return(View(userToEdit)); }