ASP.NET MVC3 AJAX POST: результат отображается в браузере, а не выполняется - PullRequest
0 голосов
/ 07 мая 2011

Представьте, что у меня есть HTML-таблица, содержащая несколько строк с элементами.Для каждого элемента я генерирую кнопку «удалить» следующим образом:

<% using (Ajax.BeginForm("Delete", "MyController", new { item.Id }, new AjaxOptions { HttpMethod="POST" })) { %>
    <input type="submit" class="deletebutton" value="Delete" />
<% } %>

Соответствующее действие выглядит следующим образом:

[HttpPost]
public JavaScriptResult Delete(int id)
{
    var item = _repository.GetById(id);
    // [...] actually delete the item               
    var script = string.Format("OnItemDeleted({0},{1})", item.Id, new JavaScriptSerializer().Serialize(item.Name));
    return JavaScript(script);
}

Наконец, это функция Javascript, которую следует вызывать послевыполнение Delete:

function OnItemDeleted(id, name) {
    $('#errorlabel').text(name + " deleted successfully.");
    $('#tr_item_' + id).fadeOut();
};

Я получил это из книги Стивена Сандерсона "Pro ASP.NET MVC 2 Framework" и однажды увидел, что она работает в моем проекте.Тем временем большая часть моего кода была изменена, включая обновление до MVC 3, и по какой-то причине он больше не работает.После того, как я нажимаю на кнопку удаления, метод действия вызывается правильно, но после этого браузер показывает мне результат JavaScript в браузере, например:

OnItemDeleted (21, «Необычный предмет 1234»)

Странно, меня также перенаправляют на Admin / MyController / Delete / {ItemId}, хотя мое действие Delete четко указано как [HttpPost] и нет действия GET с тем же именем.

У вас есть идеи, что может вызвать такое поведение?Заранее спасибо!

1 Ответ

0 голосов
/ 07 мая 2011

Понял: я использовал старые библиотеки Microsoft JavaScript из MVC 2. Замена этих устранила проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...