J'essaie de mettre à jour les rôles utilisateur à partir d'une liste déroulante. Lorsque je sélectionne le nom d'utilisateur (adresse e-mail) et le rôle (par exemple SuperUser, Admin, Utilisateur) que je veux leur attribuer et cliquez sur Soumettre, je soumets tout comme il se doit. Ce que j'ai trouvé est que pour chaque rôle que je sélectionne pour le même utilisateur à mettre à jour, il crée une entrée de données pour ce rôle et ajoute l'utilisateur plus d'une fois. Cela fait en sorte que le dernier enregistrement entré est toujours le userRole.Ajout et non mise à jour des rôles utilisateur
Ce que je ne peux pas comprendre est comment une fois que je trouve l'utilisateur, pour supprimer le RoleId actuel et ajouter le nouveau.
Si vous souhaitez un autre code de la vue, le modèle ou toute autre chose s'il vous plaît faites le moi savoir et l'afficher.
Image en bas par exemple de ce qui se passe dans la base de données.
Contrôleur
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> RegisterRole(RegisterViewModel model, ApplicationUser user)
{
var userId = db.AspNetUsers.Where(i => i.UserName == user.UserName).Select(s => s.Id);
string updateId = "";
foreach (var i in userId)
{
updateId = i.ToString();
}
//Assign Role to user here
await this.UserManager.AddToRoleAsync(updateId, model.Name);
return RedirectToAction("Index", "Employee");
}
et je les mettrais après la boucle foreach correct? – whisk
oui, mais pourquoi courez-vous faire une foreach? semble que vous avez déjà reçu un utilisateur, vous pouvez donc simplement utiliser user.Id pour userId. Je vais éditer ma réponse. –
mis à jour ma réponse, espérons que cela aide à résoudre le problème. –