如何将两个参数从ActionLink传递给ActionResult

时间:2016-08-08 13:59:30

标签: c# asp.net asp.net-mvc razor

我正在使用asp.net MVC实现一个网站。我正在尝试通过单击角色为用户分配角色。我尝试了几种方法,不幸的是,我失败了。

控制器方法

[HttpPost,ActionName("AssignUserToRole")]
[ValidateAntiForgeryToken]
[CustomAuthorize(Roles ="SudoAdmin")]
public ActionResult AssignUserToRole(long userId, long roleId)
{
    new BusinessUser().AddRoleToUser(userId, roleId);

      return RedirectToAction("Index");
}

视图

 @Html.ActionLink(@r.RoleName, "AssignUserToRole", "Users", new { userId = Model.UserId, roleId = r.RoleId })

首先我尝试了Jquery Ajax,但它失败了,尽管我觉得这不是一个好主意。但是,我仍然想用“Ajax”来做这件事,我的意思是不刷新页面。

我希望我的问题足够好 谢谢你们所有人

1 个答案:

答案 0 :(得分:4)

首先,操作设置为仅响应POST。这意味着除非您通过POST请求,否则您将获得404,因为没有可以响应任何其他请求方法的操作。

作为链接,它将始终通过GET发出请求。如果您使用JavaScript,您可以绑定到click事件并使用AJAX通过POST发送请求,但同样,您必须将其作为POST发送。如果您使用$.get$.ajax这样的方法作为GET,那么它就无法工作。

理想情况下,如果您打算通过POST点击操作,那么您应该在视图中使用form元素。使用CSS,您可以将提交按钮设置为看起来像链接,如果这是您想要的,但底层结构应该是一个表单。