【发布时间】:2013-10-03 03:48:08
【问题描述】:
过程:
- 用户打开网页,其中包含一个
asp:LinkButton(下载)和一个asp:Button(下一个)。 - “下一个”已禁用。
- 用户点击“下载”。 PDF 文件在内存中生成并作为下载发布。
需要: 启用“下一步”
问题:
- 无法使用 javascript 下载 - 必须是服务器端
- 不能影响网页上的元素使用服务器端没有 response.redirect
- 无法发出 response.redirect,因为 httpheaders 已经 作为第一步的一部分发布。
如果启用了“下一个”,我可以使用“下一个”转到新页面,但我希望在下载完成之前禁用它。
一些相关代码:
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 的想法持开放态度。
【问题讨论】:
-
它看起来可以 - 但我也找到了一个简单的解决方法。如果我在浏览器中打开 pdf 而不是强制下载,当他们点击后退按钮返回屏幕时,它会自动刷新页面。对于纯网络屏幕阅读器来说更简单更好。但我会对此进行更多研究,以防万一。
-
找到了更好的东西。看我的回答。