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