MVC Ajax.ActionLink не находит метод POST - PullRequest
13 голосов
/ 14 июня 2010

У меня есть метод POST, объявленный в моем контроллере:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateComments(int id, string comments)
{
    // ... 
}

и ActionLink на мой взгляд:

<%= Ajax.ActionLink("update", "UpdateComments", 
                        new { id = Model.Id, comments = "test" }, 
                        new AjaxOptions { 
                                HttpMethod="POST", 
                                OnFailure="alert('fail');", 
                                OnSuccess = "alert('success');" 
                            })%>

Я получаю ошибку "not found" при попытке перенаправить этот запрос.

Если я удаляю ограничение POST из метода UpdateComments в контроллере, оно работает нормально.

Чего мне не хватает?

Ответы [ 4 ]

7 голосов
/ 14 июня 2010

Кажется, мне не понравилось, как я объявлял свои обратные вызовы OnFailure и OnSuccess.Я предполагаю, что он не мог разобрать мой AjaxOptions объект, поэтому игнорировал настройку HttpMethod="POST".

Я получил его, изменив его на:

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }" 
4 голосов
/ 29 апреля 2011

В данный момент я изучаю ASP.MVC, и у меня возникла эта проблема с моим Ajax.ActionLink, я получил метод GET, а не метод POST, как это должно было быть.Затем я понимаю, что не добавил ссылку на библиотеку сценариев:

<script src=”/Scripts/MicrosoftAjax.js” type=”text/javascript”></script>
<script src=”/Scripts/MicrosoftMvcAjax.js” type=”text/javascript”></script>

После добавления сценария все заработало!

0 голосов
/ 10 января 2012

попробуйте в том числе

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftAjax.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/MicrosoftMvcAjax.js")" type="text/javascript"></script>
0 голосов
/ 20 января 2011

FormCollection имеет привязку по умолчанию связано с этим, который всегда инициализирует коллекцию и вы никогда не должен становиться нулевым. Это больше скорее всего, у вас есть пустой коллекция при использовании Ajax.ActionLink в отличие от использования формы кнопка отправки. Это потому что Метод ActionLink не выполняет POST формировать значения при выполнении AJAX запрос. Это сообщение не отвечает вам на вопрос

...