2014-01-08 3 views
5

краткий обзор ситуации:Ajax.ActionLink POST не работает в ASP.NET MVC 5

На мой взгляд, у меня есть этот кусок кода: Razor

@{ 
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 Spoke слишком рано, вспомнил, что вам нужно jQuery.Ajax.Unobtrusive http://www.nuget.org/packages/jQuery.Ajax.Unobtrusive/ пакет

Если установить это и ссылаться на него в просмотре он должен работать, он сделал я мой OOTB тест :)

Прошел быструю проверку самостоятельно, кажется, что вы не можете использовать Ajax.ActionLink для отправки запроса POST, он делает GET, даже если вы установили POST в AjaxOptions. Вы можете увидеть это, если вы используете fiddlr для отслеживания трафика.

Вы также можете использовать расширение Postman для Chrome, чтобы проверить его, вы увидите, что метод действия действительно ведет себя так, как должен, когда вы отправляете сообщение POST. Но вы получаете 404, потому что на самом деле это делает GET

Если бы это был я, я бы использовал jQuery, чтобы сделать сообщение. Вы можете увидеть больше здесь http://api.jquery.com/jquery.ajax/

Смежные вопросы