[英]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.