2016-07-14 53 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),但這不在您的問題的範圍之內。

相關問題