2011-11-09 109 views
4

我有列出存儲在其中的文件的Web應用程序。強制IE在新窗口中打開下載

每個項目都有一個超鏈接,點擊後,會強制打開/保存對話框出現。

現在,如果我指點一下,比方說,一個Word文檔的鏈接並選擇「打開」它在它自己的窗口中打開,如你所願。但是,如果該文件是HTML文件,並且選擇了「打開」選項,它會在瀏覽器中打開頁面[正確],但會在我用來選擇文檔[窗口]的窗口中打開。

因此,這個問題:是否有可能強制打開/保存對話框的「打開」選項,在新窗口中打開文檔?

編輯: 強制要打開的文檔超鏈接不只是一個指針文件(有許多原因)。該.NavigateUrl屬性包含的JavaScript函數的調用,這個功能使得一個Ajax請求到應用程序本身,從安全存儲獲取文檔並將其呈現給用戶的瀏覽器作爲附件(內容處置:附件)

進一步編輯: JavaScript函數只是一個Ajax回調到該頁面。 這個的結果是使頁面顯示在IFrame中。此頁面直接寫入到響應對象如下:

Response.ContentType = "application/octet-stream"; 
Response.AddHeader("Content-Disposition", String.Format("attachment;filename=\"{0}\"", FileName)); 
Response.AddHeader("Content-Length", String.Format("{0}", length)); 
Response.Flush(); 
Response.Close(); 

我想,如果可能改變「打開」按鈕,在出現的打開/保存對話框中的動作,這將是什麼我會在這個代碼中強制執行它。

如果它的確與衆不同,這是用C#編寫一個.net應用程序V4.0。

我知道的好和壞打開新窗口的,但是這是一個私人的應用程序和它的客戶想要什麼。

+5

大約只需添加'目標=「_空白」'來的鏈接是什麼? –

+0

ASP.NET?的WebForms? MVC? – jrummell

+0

@ jrummell WebForms。 –

回答

5

而不必每個鏈接的指向基本頁面中的JS函數嘗試這樣做...

讓每個鏈接指向一個URL(如/GetFileContent.aspx?fileid=123),並有該頁面在加載文件之前執行必要的邏輯。保持你的ContextType和響應頭代碼原樣。

每個鏈接會打開一個新的窗口,是這個樣子:

<a href="/GetFileContent.aspx?file=123" target="_blank">filename.doc</a> 
+0

我會給它一個去。 –

+0

得分!人羣狂野。 –

+0

非常好,很高興我能幫助斯圖爾特。 – kingdango