簡體   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