Выполнить код после CompleteRequest()
Я должен выполнить еще немного кода после загрузки файла, но этого не происходит. Хиты компилятора 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="";
}
2 ответа
Ваша загрузка в основном отменяет запись в браузер, вы получаете один ответ обратно, и это файл со всей информацией заголовка.
Вы застряли, если вам действительно нужно обновить форму на этом этапе. Лучше всего было бы открыть загрузку в новой вкладке или окне, используя javascript или ajax, передавая нужные значения через строку запроса.
Это одна из причин, почему веб-страницы обычно отправляют вас на другую страницу для загрузки, а не просто запускают загрузку сразу. Вам нужно два отдельных HTTP-запроса, чтобы дать два HTTP-ответа - и поскольку ваш ответ уже является файлом для загрузки, нет способа отправить ответ, который должен быть включен как часть исходной страницы.