我找到了几个答案,包括this one和this one。但出于某种原因,this.Response.IsClientConnected
仍为true
。
这是我的客户:
<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]
属性来解决此问题,我已经尝试过并且无法正常工作。
答案 0 :(得分:0)
感谢this post我终于解决了它! 实际上,我所做的是完全正常工作但是因为我在VS开发的本地计算机上运行它,所以响应从未结束。但是,当我把它放在IIS服务器上时,一切都很顺利。
如果网站或帖子被删除,我在这里发布答案:
托管应用程序时,“取消”按钮正常工作 IIS。如果您正在测试VS开发服务器上 Response.IsClientConnected将始终为true。请记住,在 以前版本的RadProgressArea取消不是 在Chrome下工作。对于2014年第二季度,这将得到解决。你可以 测试我们的内部构建。