Я нашел несколько ответов, включая this one, а также this one. Но почему-то this.Response.IsClientConnected
по-прежнему идет как true
.Как отменить длительный Ajax-запрос в .net MVC 4?
Вот мой клиент:
<div class="ajax-loader-gif-close" id="cancelBusy">Close</div>
@using (Html.BeginForm("List", "Visit", FormMethod.Post, new { @id = "formFilter" }))
{
//Some models some TextBoxFor etc.
}
<script type="text/javascript" language="javascript">
var ajaxCallObject = null;
$(document).ready(function() {
$('form').submit(function() {
ajaxCallObject = $.ajax({
url: this.action,
type: this.method,
data: $(this).serialize(),
beforeSend: function() {
toggleBusyIndicator();
},
complete: function() {
toggleBusyIndicator();
},
success: function (result) {
//Some stuff
}
});
return false;
});
}
$("#cancelBusy").click(function() {
ajaxCallObject.abort();
});
});
</script>
Вот моя сторона сервера:
[HttpPost]
public PartialViewResult List(VisitFilterViewModel model)
{
//IsClientConnected is ALWAYS TRUE even though I abort from client
while (this.Response.IsClientConnected)
{
Thread.Sleep(500);
}
return PartialView("PartialVisitFilterList", model);
}
С FireBug Я вижу, что действие Отменено, но IsClientConnected
еще true
. Что я делаю не так?
Примечание: Если вы решили удалить атрибут [HttpPost]
, чтобы решить эту проблему, я уже пробовал и не работал.