簡體   English   中英

如何阻止回發在客戶端刷新頁面

[英]How can I stop a postback from refreshing the page at the client

當我使用__doPostBack啟動回發時,會創建一個文件並返回給用戶以在HttpContext.Current.Response下載。

因為我更改了Response ,所以不修改包含其javascript值的頁面

但是當我沒有要輸出的文件時,頁面會刷新(因為回發)並且頁面上的javascript修改會丟失。

如何“停止”回發繼續並保留當前頁面? 我不能使用異步回發,因為我需要回發讓用戶下載文件。

編輯:在評論中的一些問題之后的更多信息:

  • 在Web服務請求中請求該文件。 Web服務需要執行繁重的查詢以確定是否將創建文件。 我更喜歡這只發生過一次。
  • 用戶可以拖放一些將在文件請求中使用的過濾器。 如果沒有可用的文件,則用戶應該能夠更改其過濾器,這就是為什么不應該更改頁面的原因。

從W3標准和RFC 2616:

10.2.5 204無內容服務器已完成請求但不需要返回實體主體,並且可能希望返回更新的元信息。 響應可以包括實體標題形式的新的或更新的元信息,如果存在,應該與所請求的變體相關聯。
如果客戶端是用戶代理,它不應該從導致請求發送的文檔視圖中更改它的文檔視圖。 此響應主要用於允許在不導致更改用戶代理的活動文檔視圖的情況下進行操作的輸入,盡管任何新的或更新的元信息應該應用於當前在用戶代理的活動視圖中的文檔。 204響應絕不能包含消息體,因此總是在頭字段之后的第一個空行終止。

請注意這里的粗體線。 我自己沒試過; 但是,將HTTP狀態設置為204並發回一個空文檔,而不是試圖完全停止回發,這當然值得一試。

祝你好運,我希望這會有所幫助。

編輯:這是訣竅的代碼:
System.Web.HttpContext.Current.Response.StatusCode = 204;

暫無
暫無

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

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