2011-03-02 50 views
1

如何使用該頁面的ViewState中的數據強制下載ASP.NET頁面上的文件?我發現示例提示:如何在不離開當前頁面的情況下啓動文件下載?

Response.ClearContent(); 
Response.ContentType = "text/plain"; 
Response.AddHeader("Content-Disposition", "attachment; filename=" + "example.aaa"); 
Response.Write(this.ViewState["stuffs"]); 
Response.End(); 

但是,如果我這樣做,當前頁面將被刪除並返回給用戶空白。

其他例子說創建「download.aspx」並通過javascript請求它,但在這個新的頁面上,我將無法訪問第一頁的ViewState數據。

問題是,我該如何創建一個文件,啓動下載並且不會丟失當前的頁面狀態?

回答

0

經過多次測試,我找到了解決方案。

如果我從示例代碼中刪除Response.ClearContent();,它會工作正是我需要:

  • 使用實際的頁面數據
  • 創建新的文件啓動該文件
  • 的下載保存實際頁面完好
-1

我通常通過使用Crystal Reports和生成PDF文件來處理這個問題。我用提交的數據保存對該文件的引用,並在請求時提供它。你會想要保護這個文件,這樣一個隨機的URL黑客就不會偶然發現它。

+0

有關URL的安全問題並不重要,因爲此表單只能由登錄的用戶訪問。我不知道CrystalReports是否適合我的方案,因爲直到點擊完成按鈕,數據庫上纔會保存任何內容。 –

+0

當然,但是有一個登錄用戶可以使用URL/Querystring來播放另一個登錄用戶的結果嗎? –

+0

我不這麼認爲......數據來自ViewState。它對每個用戶和每個頁面都是獨一無二的。 –

相關問題