2011-04-13 43 views
0

我們有一個頁面在新瀏覽器窗口中打開,其中有一個自動重定向到ASHX處理程序,該處理程序生成某種XLS文件。它使用JavaScript重定向完成,即將window.location.href設置爲ASHX的URL。頁面渲染和http處理器

儘管它工作並顯示文件的下載對話框,但設置window.location.href也會清除窗口的內容,使其保持空白。它不知何故是有道理的,但在前臺打開下載對話框的同時,仍然可以保持上一頁的內容。是否可能以某種方式(通過推遲重定向的執行或使用不同的技術來調用ASHX處理程序)?

如果我們可以在下載對話框出現後關閉父頁面,那麼可以以任何方式工作嗎?

回答

3

動態創建(在JavaScript中)隱藏的iframe,指向下​​載ashx位置並將其添加到DOM會做的伎倆。

0

通過在處理程序的響應中使用content-disposition標頭,可以顯示保存對話框而無需打開新窗口。您將不需要使用JavaScript來打開一個新窗口或創建一個iframe。

response.Clear(); 
response.ContentType = "application/vnd.ms-excel"; 
response.AddHeader("content-disposition", "attachment; filename=sample.xls"); 
response.AddHeader("content-legth", content.Length.ToString()); 
response.Write(content.ToString()); 
response.End(); 

看到這個問題的可能練成MIME類型(的contentType) Setting mime type for excel document

+0

我已經,但在這種情況下,它似乎並沒有幫助。 – 2011-04-13 10:35:46