MVC3剃刀Ajax.ActionLink不会使用POST方法(MVC3 Razor Ajax.Ac

2019-09-22 16:29发布

我有一个包含多个链接的页面。 这些链接应该做一个ajax后和回调。 但是,链接是做一个获取,而不是一个帖子。 这将导致404错误,因为我没有一个操作方法以处理请求的URL的获取。

如果我从我的行动方法,链接的作品删除HTTPPost属性,但回调失败,JSON的我返回一个新的页面呈现。

下面是我用在我看来代码。

<td id="action-@item.ItemID">@Ajax.ActionLink("Add", "AddToOrder", new { itemID = item.ItemID }, new AjaxOptions { HttpMethod = "POST", OnSuccess = "actionCompleted" }, new { id = "add-" + item.ItemID })</td>

这最终将这个HTML:

 <td id="action-012679"><a data-ajax="true" data-ajax-method="POST" data-ajax-success="actionCompleted" href="/mysite/neworder/AddToOrder?itemID=012679" id="add-012679">Add to Order</a></td>

我的控制器具有以下行动方法。

[HttpPost]
public JsonResult AddToOrder(string itemID) {
    return Json(new { id = itemID, Action = "Added", "Just getting this working"});
}

我的那个叫上成功的回调方法看起来是这样的:

<script language="javascript" type="text/javascript">        
    function actionCompleted(response, status, data) {
        alert("We have returned");
    }

</script>

如果我改变我的行动方法[HTTPPost]属性为[HTTPGET]我得到的Json错误。 我可以通过添加JsonRequestBehavior.AllowGet到我的返回值解决这个问题,但这并不在页面上使用定义和失败回调函数。

任何帮助,将不胜感激。

Answer 1:

也许你没有jquery.unobtrusive-ajax.js脚本连接到页面和链接优雅降级为普通锚。



Answer 2:

为了这个正常工作。 您需要将引用添加到您的网页上运行这些脚本:

MicrosoftAjax.js MicrosoftMvcAjax.js



文章来源: MVC3 Razor Ajax.ActionLink won't use POST method