我必须在下载文件后执行更多代码,但它还没有发生。编译器在ClearControls();
之后命中DownloadFile();
,但该函数未执行。
在页面上,我得到打开或保存文件的提示。但是文本框没有被清除。
在这种情况下应该做些什么。
protected void btnOk_Click(object sender, EventArgs e)
{
//ClearControls(); // not working here too.
DownloadFile();
ClearControls();
}
private void DownloadFile()
{
Response.ContentType = "application/pdf";
Response.AppendHeader("Content-Disposition","attachment;filename="+sName+".pdf");
Response.TransmitFile(Server.MapPath("~/documents/ready/" + strPdfName));
//Response.End();
HttpContext.Current.ApplicationInstance.CompleteRequest();
}
private void ClearControls()
{
txtOne.Text="";
txtTwo.Text="";
}
答案 0 :(得分:2)
你的下载基本上覆盖了对浏览器的写入,你得到一个回复,它是包含所有标题信息的文件。
如果你真的需要在此时更新表单,那你就有点困难了。最好的办法是使用javascript或ajax通过查询字符串传递您需要的值,在新的选项卡或窗口中打开下载。
答案 1 :(得分:1)
这是网页通常会将您发送到另一个下载页面的原因之一,而不是立即开始下载。您需要两个单独的HTTP请求才能提供两个HTTP响应 - 由于您的响应已经是要下载的文件,因此无法发送应包含在原始页面中的响应。