public async Task<ActionResult> Create(UsersAdminCreateViewModel model) { if(ModelState.IsValid) { var user = new ApplicationUser(); user.UserName = model.UserName; user.Email = model.Email; var adminResult = await UserManager.CreateAsync(user, model.Password); if(adminResult.Succeeded) { if(model.RolesIdForUser.Count()!=0) { //set Role for each RoleId foreach(var item in model.RolesIdForUser) { var role = await RoleManager.FindByIdAsync(item); var result = await UserManager.AddToRoleAsync(user.Id, role.Name); //failed if (!result.Succeeded) { //failed to set role for user ModelState.AddModelError("", result.Errors.First().ToString()); return View(model); } } } } else { //failed to create user ModelState.AddModelError("", adminResult.Errors.First().ToString()); return View(model); } //succeed to add a new user return RedirectToAction("Index"); } else { //Note-Since we do not use ViewModel instead of ViewBag to pass Roles data to View //So when the post of the form failed.Need Not To Rebuild Roles data //var createVM = new UsersAdminCreateViewModel //{ // Roles = new SelectList(await RoleManager.Roles.ToListAsync(), "Id", "Name") //}; //ViewBag.RoleId = new SelectList(RoleManager.Roles, "Id", "Name"); //failed to add return View(model); } }
//Get: /User/Create public async Task<ActionResult> Create() { //get the list of the roles var createVM = new UsersAdminCreateViewModel { Roles = await RoleManager.Roles.ToListAsync() }; return View(createVM); }