我正在尝试对控制器发生的操作完成进行操作, 但是操作没有收到POST并且javascript控制台返回此错误 500内部服务器错误
这是我的 Ajax.actionlink()
@Ajax.ActionLink("Complete", "Complete", "Occurrence", new { id = Model.Id }, new AjaxOptions { HttpMethod = "POST" })
这是我的行动完成进入控制器发生
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Complete(int id)
{
return new HttpStatusCodeResult(200);
}
有人因同样的情况而过世了? 感谢您的关注!
答案 0 :(得分:2)
您的操作使用[ValidateAntiForgeryToken]
进行修饰,这意味着它会期望防伪标记被发送到POST请求有效负载中。事实并非如此。在您的请求中,您只发送了一些ID(new { id = Model.Id }
)。
一旦可能的解决方法是使用Ajax.BeginForm,它将包含防伪标记:
@using (Ajax.BeginForm("Complete", "Occurrence", new { id = Model.Id }, new AjaxOptions { HttpMethod = "POST" }))
{
@Html.AntiForgeryToken()
<button type="submit">Complete</button>
}
Html.AntiForgeryToken()
将生成一个隐藏字段,其中包含所需的防伪标记,该标记将与AJAX请求一起发送到服务器。