CompleteRequest后执行代码()
问题描述:
我必须在下载文件后执行一些更多的代码,但它不会发生。编译器在DownloadFile();
之后点击ClearControls();
,但该函数未执行。 在页面上,我得到提示来打开或保存文件。但是文本框没有被清除。 在这种情况下应该做什么。CompleteRequest后执行代码()
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="";
}
答
你的下载基本上覆盖了写入浏览器,你得到一个响应,它是所有头信息的文件。
如果您确实需要在此时更新表单,那么您有点卡住了。最好的办法是在一个新的标签或窗口中使用javascript或ajax通过querystring传递你需要的值来打开下载。
答
这是网页通常会将您发送到不同页面进行下载的原因之一,而不是立即开始下载。您需要两个单独的HTTP请求来提供两个HTTP响应 - 由于您的响应已经是要下载的文件,因此无法发送应作为原始页面一部分的响应。
非常感谢你 – Qwerty 2014-09-24 10:41:56