2014-01-08 5 views
5

Eine kurze Zusammenfassung der Situation:Ajax.ActionLink POST funktioniert nicht in ASP.NET MVC 5

meiner Ansicht nach habe ich dieses Stück Razor Code:

@{ 
ViewBag.Title = "Index"; 

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

... 

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

als in meinem Controller :

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

ich eine ‚Ressource nicht gefunden‘ Fehlermeldung erhalten, wenn ich auf den Link klicken, aber wenn ich die [Httppost] Attribut funktioniert alles einwandfrei entfernen. Aber ich möchte eine POST-Methode. Ich habe mich umgesehen und einige ähnliche Probleme gefunden, aber keine der Lösungen hat für mich funktioniert.

Antwort

7

UPDATE Spoke zu früh, erinnerte sich, dass Sie die jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/ Paket

benötigen Wenn Sie diese installieren und Referenz in Sie es sehen sollte funktionieren, es habe ich meine OOTB Test :)

Ich habe einen schnellen Test selbst gemacht, es scheint, dass Sie Ajax.ActionLink nicht benutzen können, um eine POST-Anfrage zu stellen, es tut ein GET, obwohl Sie POST in AjaxOptions gesetzt haben. Sie können dies sehen, wenn Sie fiddlr verwenden, um den Datenverkehr zu überwachen.

Sie können auch die Postman-Erweiterung für Chrome verwenden, um es zu testen. Sie werden sehen, dass sich die Aktionsmethode tatsächlich so verhält, wie Sie es beim POST tun sollten. Aber Sie erhalten die 404, weil es tatsächlich ein GET

Wenn ich ich wäre, würde ich jQuery verwenden, um den Beitrag zu tun. Sie können mehr hier sehen http://api.jquery.com/jquery.ajax/