Представьте, что у меня есть 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 с тем же именем.
У вас есть идеи, что может вызвать такое поведение?Заранее спасибо!