2016-07-05 112 views
1

我试图从我的应用程序用户上删除一个角色,点击ActionLink并且它成功发送一个Viewbag消息。我目前遇到的问题是,当我尝试从角色中删除用户时,页面正在刷新。原因是因为我希望管理员能够获得他正在请求的角色列表并从同一页面删除,以保持应用程序的精简。这里是我的控制器操作:如何在同一个视图中的同一个控制器中执行2个不同的ActionResults?

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"); 
} 

这里是我的看法删除链接

@Html.ActionLink("Remove Role", "DeleteRoleForUser", new{controller = "Role"}) 

我有DeleteRoleForUserGetRoles控制器正常上不同意见通过自己与DeleteRoleForUser工作/单独使用一个列表框以显示数据库中的所有角色,但是,正如我前面提到的,我想将两个功能组合起来。

enter image description here

回答

0

首先,你的动作链接会导致浏览器发出GET请求,而不是一个POST。所以你的[HttpPost]属性将需要相应地改变。

其次,您没有将任何参数传入该方法。您的链接将需要更改为

@Html.ActionLink("Remove Role", "DeleteRoleForUser", new{ controller = "Role", UserName="username", RoleName="role"}) 
相关问题