プロセス:
asp:LinkButton
ユーザーは、 (ダウンロード) とasp:Button
(次へ) を含む Web ページを開きます。- 「次へ」は無効です。
- ユーザーは「ダウンロード」をクリックします。PDF ファイルはメモリ内に生成され、ダウンロードとして発行されます。
必要: 「次へ」を有効にする
問題:
- JavaScript を使用してダウンロードできません - サーバー側である必要があります
- response.redirect なしでサーバー側を使用して Web ページの要素に影響を与えることはできません
- httpheaders はステップ 1 の一部として既に発行されているため、response.redirect を発行できません。
「次へ」が有効になっている場合は、新しいページに移動できますが、ダウンロードが完了するまで無効にしたいです。
関連するコード:
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 のアイデアも歓迎します。