簡體   English   中英

回發后使用C#中已清除的響應執行Javascript

[英]Execute Javascript after postback with cleared response in C#

當用戶單擊我網站上的按鈕時,我在服務器端制作了一個excel文件,並將其寫入響應中。

HttpResponse httpResponse = Page.Response;
httpResponse.ClearHeaders();
httpResponse.ClearContent();
httpResponse.Clear();
httpResponse.Buffer = true;
httpResponse.AppendHeader("Content-Disposition",
"attachment; " +
"filename=\"" + fileName + "\";");
httpResponse.ContentType = "application/vnd.xlsx";
httpResponse.Charset = "";

using (MemoryStream memoryStream = new MemoryStream())
{
    workbook.SaveAs(memoryStream);
    memoryStream.WriteTo(httpResponse.OutputStream);
    memoryStream.Close();
}

httpResponse.Flush();
httpResponse.End();

編寫完該文件后,我希望運行一個JavaScript腳本塊,但似乎無法完成這項工作。 我聽說當我清除響應時,由於用戶沒有獲得與響應相同的頁面,所以無法使用Page.ClientScript.RegisterStartupScript (不建議使用?)編寫腳本塊,但是我希望有一個解決方法。

進行回發和獲取文件的按鈕不在UpdatePanel中,因此我無法使用在那里實現的PageRequestManager.add_endRequest函數。 而且我無法將控件放入UpdatePanel中,因為它不允許我在異步回發中寫入文件。

在回發結束時還有其他方法可以觸發javascript函數嗎? 檢查間隔是否正在進行(或已完成)的JavaScript間隔函數也是一種可接受的解決方案(但據我所知,JavaScript無法“檢查”同步間隔是否正在進行)。

Response.End()中止線程並將執行發送到Application_EndRequest。 在那之后什么也做不了。 您可以下載文件或執行javascript。 但是有使用iframe的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM