2012-09-20 22 views
3

我有一個包含多個鏈接的頁面。這些鏈接應該做一個ajax post和回調。但是,該鏈接正在執行Get而不是Post。這會導致404錯誤,因爲我沒有處理get請求URL的操作方法。MVC3 Razor Ajax.ActionLink不會使用POST方法

如果我從我的Action方法中刪除HTTPPost屬性,鏈接將起作用,但回調失敗並且我返回的Json會呈現在新頁面中。

這是我在我看來使用的代碼。

<td id="[email protected]">@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添加到我的返回值來解決此問題,但這不會使用頁面上定義的回調函數並失敗。

任何幫助,將不勝感激。

+0

這看起來像一個神祕主義者。 您不要點UpdateTargetId,嘗試設置它。 – STO

回答

6

也許您沒有將jquery.unobtrusive-ajax.js腳本附加到頁面,並且鏈接正常降級爲常規錨點。

+0

是的,這可能是。它不是默認包含的。 – Rickard

+0

woohoo!非常感謝! – Jonesopolis

1

爲了讓這項工作正常進行。您需要添加您的網頁上對這些腳本引用:

MicrosoftAjax.js MicrosoftMvcAjax.js

+0

這些都不需要。 –