Вопрос

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

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

И действие на мой взгляд:

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

Я получаю ошибку «не найден», когда она пытается направить этот запрос.

Если я удалю рестораны после метода UpdateComments в контроллере, он работает нормально.

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

Это было полезно?

Решение

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

Я получил это, работая, изменив его на:

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }" 

Другие советы

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

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

После добавления скрипта это работало нормально!

FormCollection имеет связующее значение по умолчанию, связанное с ним, который всегда инициализирует коллекцию, и вы никогда не должны получать NULL. Скорее всего, у вас есть пустая коллекция при использовании AJAX.ActionLink, в отличие от при использовании кнопки отправки формы. Это связано с тем, что метод ActionLink не публикует никаких значений формы, когда она выполняет запрос AJAX. Этот пост - нераздельник вам вопрос

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

<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>
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top