2016-03-18 41 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); 
     } 
    }