繁体   English   中英

MVC Ajax.ActionLink找不到POST方法

[英]MVC Ajax.ActionLink doesn't find POST method

我在我的控制器中声明了一个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限制,它可以正常工作。

我错过了什么?

它似乎不喜欢我宣布我的OnFailureOnSuccess回调的方式。 我想它无法解析我的AjaxOptions对象,所以忽略了HttpMethod="POST"设置。

我通过将其更改为:

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }" 

我现在正在学习ASP.MVC并且我的Ajax.ActionLink遇到了这个问题,我得到了一个GET方法而不是应该使用的POST方法。 然后我意识到我没有添加脚本库引用:

<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>

添加脚本后,它工作正常!

FormCollection有一个与之关联的默认绑定器,它总是初始化集合,你永远不应该为null。 与使用表单提交按钮时相比,使用Ajax.ActionLink时更有可能是空集合。 这是因为ActionLink方法在执行AJAX请求时不会POST任何表单值。 这篇文章是你的问题

尝试包括

<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>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM