我正在使用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”来做这件事,我的意思是不刷新页面。
我希望我的问题足够好 谢谢你们所有人
答案 0 :(得分:4)
首先,操作设置为仅响应POST。这意味着除非您通过POST请求,否则您将获得404,因为没有可以响应任何其他请求方法的操作。
作为链接,它将始终通过GET发出请求。如果您使用JavaScript,您可以绑定到click
事件并使用AJAX通过POST发送请求,但同样,您必须将其作为POST发送。如果您使用$.get
或$.ajax
这样的方法作为GET,那么它就无法工作。
理想情况下,如果您打算通过POST点击操作,那么您应该在视图中使用form
元素。使用CSS,您可以将提交按钮设置为看起来像链接,如果这是您想要的,但底层结构应该是一个表单。