繁体   English   中英

如何在ASP.NET中进行请求期间重定向到另一个页面

[英]How to redirect to another page during request in ASP.NET

我有规则的asp.net页面,上面有几个按钮。 我希望有1个类似于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代码在单击时执行,而不等待响应返回?

使用javascript,window.stop(),停止浏览器加载

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

没有javascript,有点棘手,提交表单可以取消其他请求,例如,将虚拟对象提交到同一页面

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

按取消将向该页面提交伪表格,并停止其他过程

我希望能够取消所有当前请求。 如果用户单击运行按钮并在背面执行升沉查询,或者用户单击按钮并在背面执行任何其他升沉逻辑,我想能够随时取消和刷新页面

首先,HTTP是无状态的。 这意味着当服务请求时,UI线程不再可用。 结果,您不知道要取消该任务。

您希望实现的目标是不可能的。 但是,您有解决方法。 触发长期运行的任务后,您可以在数据库中插入一条记录,例如-

UserId, TaskType, IsCancelled

然后让该任务执行,并经常检查IsCancelled标志。

如果要取消它,请将IsCancelled标志设置为true。 当任务看到它时,它将自行取消, 直到您无法执行任何操作为止

理想情况下,您希望将诸如HangfireQuartz.Net之类的Scheduler用于长时间运行的作业,但这不在您的问题范围内。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM