0

下载文件后我必须执行更多代码,但它没有发生。编译器命中ClearControls();after 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="";
}
4

2 回答 2

2

您的下载基本上覆盖了对浏览器的写入,您收到了一个响应,它是包含所有标题信息的文件。

如果此时您真的需要更新表单,您会有点卡住。最好的办法是使用 javascript 或 ajax 通过查询字符串传入您需要的值,在新选项卡或窗口中打开下载。

于 2014-09-24T10:26:58.060 回答
1

这就是为什么网页通常会将您发送到不同的页面进行下载,而不是简单地立即开始下载的原因之一。您需要两个单独的 HTTP 请求来提供两个 HTTP 响应 - 由于您的响应已经是要下载的文件,因此无法发送应包含在原始页面中的响应。

于 2014-09-24T10:59:15.310 回答