MVC3 Razor Ajax.ActionLink不会使用POST方法

我有一个包含多个链接的页面。 这些链接应该做一个ajaxpost和回调。 但是,该链接正在执行Get而不是Post。 这会导致404错误,因为我没有动作方法来处理请求的URL获取。

如果我从我的Action方法中删除HTTPPost属性,该链接可以正常工作,但是回调失败并且我返回的Json将在新页面中呈现。

这是我在视图中使用的代码。

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

这最终添加了这个HTML:

  Add to Order 

我的控制器具有以下操作方法。

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

我在Success上调用的回调方法如下所示:

  function actionCompleted(response, status, data) { alert("We have returned"); }  

如果我将操作方法​​的[HTTPPost]属性更改为[HTTPGet],则会出现Json错误。 我可以通过将JsonRequestBehavior.AllowGet添加到我的返回值来解决这个问题,但这不会使用页面上定义的回调函数而失败。

任何帮助,将不胜感激。

可能你没有附加到页面的jquery.unobtrusive-ajax.js脚本,链接正常降级为常规锚点。

为了使这个工作正常。 您需要在页面上添加对这些脚本的引用:

MicrosoftAjax.js MicrosoftMvcAjax.js