2014-02-13 109 views
0

這是我過去曾經遇到的一個問題,但我忘記了是否曾經解決過這個問題。我擁有它,所以當用戶點擊一個asp:linkbutton時,它會觸發一個文件的下載。成功下載文件沒有問題。但是,如果用戶點擊下載並點擊某個按鈕,下載後會發生回傳並刷新頁面,清除所有內容(如表格或文本)。我如何防止這種情況發生?點擊一個按鈕或鏈接下載後發生下載後發生

下面是執行下載的代碼。

string name = Path.GetFileName(filePath); 
Response.Clear(); 
Response.AddHeader("content-disposition", "attachment; filename=\"" + name + "\""); 
Response.ContentType = mimeType; 
Response.BinaryWrite(file); 
Response.End(); 

注:

  • LinkBut​​ton控件是不是在代碼幕後創造,如果有差別。
  • 第二次單擊該鏈接時文件不會下載。只發生刷新。
  • 這是一個DNN模塊

回答

0

好的,我知道這個問題的根源,但我從來沒有找到它的解決方案。這甚至出現的原因是由於DotNetNuke中的設置。如果您查看性能設置,在「高級設置」選項卡的「主機設置」下,會出現一個名爲Page State Persistence的設置。如果你像我一樣將它設置爲Memory,它將導致AJAX問題。甚至在說明中也提到了這一點。將它重新設置爲Page使問題消失。

原因我把它作爲內存保存的原因是因爲我公司的網站使用內存,但是我不知道它被切換回頁面。現在這不是問題,但如果任何人找到解決方案,當它設置爲記憶讓我知道!否則,我建議不要使用它,除非它在更新版本的DNN中修復。

1

首先,你需要保存要保持背部後發生之前的信息的一部分。這可以通過使用會話來完成。例如,如果你想保存的文本框的值,你可以說:

Session["TextBox1"] = TextBox1.Text; 

然後,你需要處理後重新出現在你的頁面加載功能。

private void Page_Load() 
{ 
    //check if this is a post back 
    if(this.IsPostBack) 
    { 
     //restore your values 
     TextBox1.Text = (string)Session["TextBox1"]; 
    } 
} 
+0

我也需要將表格保存在gridview中,但是這種方法的問題在於它沒有解決第二次點擊。我再次點擊下載鏈接,但該頁面只刷新並不下載。 – Mitchell

相關問題