簡體   English   中英

從更改網頁內容和瀏覽器的下載ASP.net網站

[英]Change web page content and browser's download ASP.net web from

我正在使用ASP.net Web表單。

客戶可以使用以下功能下載文件:

    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);
    }

實際上,無論執行什么操作或在哪里放置修改(在dowload函數之前或之后),文本都不會顯示,除非下載,否則什么也不會發生。

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

再次感謝梅森,

一種方法是在單獨的選項卡中調用dowload函數,然后在下載后立即關閉該選項卡,速度應足夠快,以使用戶不會對該新選項卡感到困惑。 因此,首頁始終可以自由編寫自己的響應。

內容頁 :

 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);
        }
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM