2016-07-14 47 views
2

我有正常的asp.net页面上有几个按钮。我想要有1个按钮,如Stop Request,所以无论点击哪个按钮,用户都可以点击此按钮并刷新页面。因此,这里的例子我的想法:如何在ASP.NET中的请求期间重定向到另一个页面

<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代码,当点击它被执行,而不是等待响应回来吗?

+1

这个问题有点难以理解。当单击一个按钮时,是否要在服务器端执行一些命令并返回到UI而无需等待它完成?或者你想取消已经在后台运行的东西? – Win

+0

我想有能力取消所有当前请求。如果用户点击运行按钮,它会在后面执行heave查询,或者用户单击按钮,并且它会在后面执行任何其他升降逻辑我希望能够随时取消并刷新页面 – Bryuk

回答

0

与JavaScript,window.stop(),停止浏览器装载

function CancelRequestClick() { 
    window.stop(); 
    window.location.href("RateReport.aspx"); 
    return false; 
}; 

没有JavaScript的,有点棘手,submiting形式可以取消其他的要求,例如虚拟提交到同一页面

<form action="YourAspxPage.aspx" method="get"> 
    <input type="submit" value="cancel"> 
</form> 

按取消将提交虚拟表单到该页面,并停止其他工艺

+0

仅提供代码解决方案;请编辑你的答案,以解释为什么这能解决问题。 –

+0

嗨。首先,我在IE中工作,我发现window.stop;不支持IE。所以,我发现我可以使用document.execCommand(“Stop”);尽管如此,但这并没有帮助。我的页面仍在等待,直到响应结束,然后刷新... – Bryuk

+0

为什么不能重新加载页面?在点击时附加事件,就像你在刷新时所做的那样“btnRefresh_Click”只是为“停止按钮”创建另一个事件,然后只需点击该页面就可以重新加载一个页面?像'Response.Redirect(“YourAspxPage.aspx”);' – 2016-07-14 21:47:10

0

我想有能力取消所有当前请求。如果用户点击 运行按钮,它的背面执行升沉查询或用户点击 按钮,它执行我想 有随时取消和刷新页面才能在后面的任何其他起伏逻辑

第一总之,HTTP是无状态的。这意味着何时提供请求,UI线程不再可用。因此,您不知道要取消该任务。

你希望实现的是不可能的。但是,你有一个工作。引发了长时间运行的任务后,你在数据库中插入一条记录一样 -

UserId, TaskType, IsCancelled 

然后让去,经常对IsCancelled标志检查任务。

如果您想取消它,请将IsCancelled标志设置为true。当任务看到它时,它将自行取消,直到那时你什么也做不了

理想情况下,您希望对长时间运行的作业使用调度程序(如HangfireQuartz.Net),但这不在您的问题的范围之内。

相关问题