Ich versuche, eine Rolle von meinem Anwendungsbenutzer auf ActionLink-Klick zu entfernen, und wenn es erfolgreich ist, sende eine Viewbag-Nachricht. Das Problem, das ich derzeit habe, ist, dass wenn ich versuche, den Benutzer aus der Rolle zu entfernen, die Seite aktualisiert wird. Der Grund dafür ist, dass ich möchte, dass der Administrator eine Liste der Rollen, die er anfordert, von der gleichen Seite abrufen und löschen kann, um die Anwendung schlank zu halten. Hier ist mein Controller-Aktion:Wie führe ich zwei verschiedene ActionResults in ein und demselben Controller in derselben Ansicht aus?
public ActionResult DeleteRoleForUser()
{
var list = _context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
return RedirectToAction("GetRoles");
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult DeleteRoleForUser(string UserName, string RoleName)
{
var account = new AccountController();
ApplicationUser user = _context.Users.FirstOrDefault(u => u.UserName.Equals(UserName, StringComparison.CurrentCultureIgnoreCase));
if (account.UserManager.IsInRole(user.Id, RoleName))
{
account.UserManager.RemoveFromRole(user.Id, RoleName);
ViewBag.Message = "Role removed from this user successfully!";
return View("GetRoles");
}
var list = _context.Roles.OrderBy(r => r.Name).ToList().Select(rr => new SelectListItem { Value = rr.Name.ToString(), Text = rr.Name }).ToList();
ViewBag.Roles = list;
return View("GetRoles");
}
Hier wird das Entfernen Link auf meiner Ansicht
@Html.ActionLink("Remove Role", "DeleteRoleForUser", new{controller = "Role"})
Ich habe die DeleteRoleForUser
und die GetRoles
Controller ordnungsgemäß funktioniert/separat auf unterschiedlichen Ansichten von sich mit DeleteRoleForUser
einer Auswahlbox mit Um alle Rollen in der Datenbank anzuzeigen, möchte ich jedoch, wie ich bereits erwähnt habe, die beiden Funktionen kombinieren.