Ich versuche, die Benutzerrollen aus einem Dropdown zu aktualisieren. Wenn ich den Benutzernamen (E-Mail-Adresse) und die Rolle (z. B. SuperUser, Admin, Benutzer), die ich ihnen zuweisen möchte, auswähle und auf "Senden" klicke, übergebe ich alles so, wie es sollte. Was ich gefunden habe, ist, dass ich für immer die gleiche Rolle für den gleichen Benutzer auswähle, um sie zu aktualisieren, einen Dateneintrag für diese Rolle erstellt und den Benutzer mehr als einmal hinzufügt. Dies macht es so, dass der zuletzt eingegebene Datensatz immer die userRole ist.Benutzerrollen hinzufügen und nicht aktualisieren
Was ich nicht herausfinden kann ist, wie ich den Benutzer finde, um die aktuelle RoleId zu löschen und die neue hinzuzufügen.
Wenn Sie irgendwelche anderen Code aus der Ansicht, Modell oder irgendetwas anderes möchten, lassen Sie mich bitte wissen und krank Posten.
Bild unten zum Beispiel, was passiert in der DB.
-Controller
[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");
}
und ich würde diese nach der foreach-Schleife richtig setzen? – whisk
ja, aber warum rennst du eine foreach? Es scheint, dass Sie bereits einen Benutzer erhalten haben, also können Sie einfach user.Id für userId verwenden. Ich werde meine Antwort bearbeiten. –
aktualisiert meine Antwort, hoffe, dass das Problem zu lösen hilft. –