2014-01-08 97 views
5

的情況簡要總結:Ajax.ActionLink POST沒有在ASP.NET MVC工作5

在我看來,我有這一塊的剃刀代碼:

@{ 
ViewBag.Title = "Index"; 

AjaxOptions options = new AjaxOptions(); 
options.HttpMethod = "POST"; 
} 

... 

@Ajax.ActionLink("Linkname", "CreateChallenge", new { challengedId = Model.UserId },options); 

比我控制器:

[Authorize] 
[HttpPost] 
    public string CreateChallenge(string challengedId) 
    { 
     ChallengeRepository.CreateChallenge(challengedId); 
     return "Sendend!"; 
    } 

我得到的,當我點擊鏈接的「資源未找到」的錯誤,但是當我刪除[HttpPost]屬性一切正常。但我想要一個POST方法。我環顧四周,發現一些類似的問題,但沒有解決方案爲我工作。

回答

7

UPDATE 輪輻太快,想起你,如果你安裝這個並引用它,你認爲它應該工作需要jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/

,它沒有我我的開箱即用的測試:)

自己做了一個快速測試,看起來你不能使用Ajax.ActionLink發出POST請求,即使你在AjaxOptions中設置了POST,它也會執行GET。如果您使用fiddlr監控流量,您可以看到這一點。

您也可以使用Chrome的郵遞員擴展程序進行測試,您會看到操作方法的實際行爲與您在POST時的行爲方式相同。但你得到的404,因爲它實際上是一個GET

如果是我我會用jQuery來做這個職位。你可以在這裏看到更多 http://api.jquery.com/jquery.ajax/