我在我的控制器中声明了一个POST方法:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateComments(int id, string comments)
{
// ...
}
在我看来和一个ActionLink:
<%= Ajax.ActionLink("update", "UpdateComments",
new { id = Model.Id, comments = "test" },
new AjaxOptions {
HttpMethod="POST",
OnFailure="alert('fail');",
OnSuccess = "alert('success');"
})%>
尝试路由此请求时出现“未找到”错误。
如果我从控制器中的UpdateComments方法中删除POST限制,它可以正常工作。
我错过了什么?
答案 0 :(得分:7)
它似乎不喜欢我宣布OnFailure
和OnSuccess
回调的方式。我想它无法解析我的AjaxOptions
对象,因此忽略了HttpMethod="POST"
设置。
我通过将其更改为:
来实现它OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }"
答案 1 :(得分:4)
此刻我正在学习ASP.MVC,我的Ajax.ActionLink遇到了这个问题,我得到了一个GET方法而不是应该使用的POST方法。然后我意识到我没有添加脚本库引用:
<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>
添加脚本后,它运行正常!
答案 2 :(得分:0)
FormCollection有一个默认的活页夹 与之相关的永远 初始化集合和你 永远不应该为空。它更多 可能你有空 使用Ajax.ActionLink时的集合 与使用表格时相反 提交按钮。这是因为 ActionLink方法不POST任何 在执行AJAX时形成值 请求。 This post is the unswer to you question
答案 3 :(得分:0)
尝试包括
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>