2016-03-18 42 views
0

我正在使用ASP.net web窗體。更改網頁內容和瀏覽器的下載ASP.net網絡從

客戶端可以用這個溫控功能下載文件:

private void ExporterFichier(string fileName, string fileType, string content) 
    { 
     Response.Clear(); 
     Response.Buffer = true; 
     Response.AddHeader("content-disposition", "attachment;filename=" + Server.UrlPathEncode(fileName)); 
     Response.Charset = ""; 
     Response.ContentType = fileType; 
     Response.Output.Write(content); 
     Response.Flush(); 
     Response.End(); 
    } 

的事情是,我想展現下載有關文件的一些信息,因爲它是下載。

對於爲例,如果我下載457行文本的文件,我想,以示與網頁上的標籤:

「此文件包含457行」

但當我這樣做:

protected void btnAG_click(object sender, EventArgs e) 
    { 
     lbl.Text = AllTheLines.Count().ToString() + " lines"; 

     ExporterFichier("s.csv", "text/csv", s); 
    } 

文本沒有顯示,其實,我無論做什麼或者我把修改(下載中心的功能之前或之後),什麼都沒發生EXEP下載。

甚至有可能修改頁面的內容並下載相同功能的文件嗎?還有另一種方法可以做到嗎?

+1

因爲你結束響應它不顯示文本更改。解決方案是在單獨的選項卡/窗口中進行文件下載。 – mason

+0

你只有一個迴應,但你試圖讓他們兩個不同,你不能這樣做......想想另一種方法 – Aristos

回答

0

再次感謝梅森,

一種方法是調用單獨的選項卡中下載中心的功能,然後關閉該選項卡將下載後,速度不夠快,這樣用戶就不會感到困惑與新的標籤。所以第一頁總是可以自由地寫出它自己的迴應。

內容頁:

protected void btnAG_click(object sender, EventArgs e) 
{ 
    int id_sdg = Convert.ToInt32(ddlAG.SelectedValue); 

    Page.ClientScript.RegisterStartupScript(
     this.GetType(), 
     "OpenWindow", 
     "window.open('Telecharge.aspx?idSdg=" + id_sdg.ToString() + "','_newtab');", 
     true); 

    courriels.Count().ToString() + " Emails detected"; 
} 

下載頁面:

protected void Page_Load(object sender, EventArgs e) 
    { 
     int id_sdg = Convert.ToInt32(Page.Request["idSdg"]); 

     using (DAL.AGEntities db = new DAL.AGEntities()) 
     { 
      var courriels = BigQuery(db); 

      string liste = BLL.ConstructeurString.BuildCsv(courriels); 

      ExporterFichier("ListeCourriels-" + id_sdg.ToString() + ".csv", "text/csv", liste); 
     } 
    }