процесса:asp.net обновления страницы LinkButton после загрузки PDF
- Пользователь открывает веб-страницу, которая содержит
asp:LinkButton
(скачать) иasp:Button
(следующий). - «следующий» отключен.
- Пользователь нажимает кнопку "скачать". PDF-файл создается в памяти и выдается как загрузка.
Потребность: включить "рядом"
Проблема:
- не может загрузить с помощью Javascript - должен быть на стороне сервера
- не могут повлиять на элементы веб-страница с использованием серверной стороны без response.redirect
- не может выдать response.redirect, потому что httpheaders уже были выпущены как часть первого шага.
Я могу перейти на новую страницу, используя «next», если она была включена, но я хочу, чтобы она была отключена до тех пор, пока загрузка не будет выполнена.
Некоторые соответствующий код:
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
If SessionHelper.PrintedEnvelope Or SessionHelper.PrintedTemplate Then
Me.btnNext.Enabled = True
Me.btnNext.CssClass = "nextButton"
Else
Me.btnNext.Enabled = False
End If
End Sub
Protected Sub btnEnvelopeTemplate_Click(sender As Object, e As EventArgs) Handles btnEnvelopeTemplate.Click
Try
SessionHelper.PrintedTemplate = True
Dim m As System.IO.MemoryStream = DeliveryHelper.generateEnvelope(True, "English")
Dim data As Byte() = m.ToArray
Response.ClearContent()
Response.ClearHeaders()
Response.ContentType = "application/download"
Response.AppendHeader("Content-Length", data.Length.ToString())
Response.AppendHeader("Content-Disposition", "attachment; filename=" + "EnvelopeTemplate.pdf")
Response.AppendHeader("Accept-Ranges", "bytes")
Response.OutputStream.Write(data, 0, data.Length)
If Response.IsClientConnected Then
Response.Flush()
' Response.End()
End If
Catch ex As Exception
'stuff here
End Try
End Sub
Я открыт для Jquery идеи тоже.
Посмотри, если это помогает http://stackoverflow.com/questions/1106377/detect-when- browser-receive-file-download –
похоже, что это возможно, но я также нашел легкую обходную работу. Если я открою PDF в браузере вместо того, чтобы форсировать загрузку, когда они нажимают кнопку «Назад», чтобы вернуться на экран, она автоматически обновляет страницу. Проще и лучше для веб-экранов. Но я рассмотрю это еще раз, чтобы посмотреть, как это будет работать на всякий случай. – user158017
нашел что-то лучшее. см. мой ответ. – user158017