我有常规的asp.net页面,上面有几个按钮。我希望有一个像Stop Request
这样的按钮,所以无论点击什么按钮,用户都可以点击这个按钮刷新我的页面。所以这是我的想法的例子:
<asp:Button ID="btnRefresh" runat="server" OnClick="btnRefresh_Click" ToolTip="Click to generate report based on parameters selected above"
Text="Run Report" Width="100px" />
<asp:Button ID="btnCancelRequest" runat="server" Text="Stop Request" OnClientClick="javascript:return CancelRequestClick();"/>
因此,btnRefresh
进行回发,执行SQL查询并执行后端逻辑。让我们假设一切都需要10-20秒才能完成。我还有更多像这样的按钮。其中一些执行大量的SQL查询,其中一些查询会在后面生成一些长时间的执行代码。我想拥有只会刷新页面的btnCancelRequest
按钮,这样可以在没有任何用户更改的情况下恢复页面。
这里的JS代码
function CancelRequestClick() {
window.location.href("RateReport.aspx");
return false;
};
有没有办法让这个JS代码在点击时执行而不是等待回复?
答案 0 :(得分:0)
使用javascript,window.stop(),停止浏览器加载
def fact(n):
ans=1;
for i in range (1,n+1):
ans=ans*i;
return ans;
while(True):
n=input()
if not n:
break
n=int(n)
print (str(n)+"!")
print (fact(n))
没有javascript,有点棘手,提交表单可以取消其他请求,例如虚拟提交到同一页面
function CancelRequestClick() {
window.stop();
window.location.href("RateReport.aspx");
return false;
};
按取消将向该页面提交虚拟表格,并停止其他过程
答案 1 :(得分:0)
我希望能够取消所有当前请求。如果用户点击 运行按钮,它在后面或用户点击执行升沉查询 按钮,它执行我想要的背面的任何其他升沉逻辑 能够随时取消和刷新页面
首先,HTTP是无状态的。这意味着在提供请求时,UI线程不再可用。结果,您不知道要取消的任务。
您希望实现的目标是不可能的。 但是,您有一个解决方法。触发长时间运行的任务后,在数据库中插入记录,如 -
UserId, TaskType, IsCancelled
然后让任务去检查 IsCancelled 标志。
如果要取消它,请将IsCancelled标志设置为true。当任务看到它时,它将自行取消直到那时你不能做任何事情。
理想情况下,您希望将Hangfire或Quartz.Net等计划程序用于长时间运行的作业,但这超出了您的问题范围。