aspxページをwindow.showModalDialog()を使用してモーダルポップアップで開くと、aspxページからファイルをダウンロードできません。モーダルダイアログからダウンロードできません。window.showModalDialog
aspxページに画像ボタンがあります。クリックすると、ビジネスロジックを使用してExcelファイルが生成され、それをレスポンスヘッダーに追加して、そのファイルをダウンロードできるようにします。コードは次のとおりです
Protected Sub ibtnExport_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ibtnExport.Click
...
Some business logic to generate excel file.
...
Response.ClearHeaders()
Response.ContentType = "application/ms-excel"
Response.AddHeader("content-disposition", "attachment; filename=" + someXLSFile)
Response.TransmitFile(someXLSFileWithPath)
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
End Sub
このaspxページをモーダルポップアップとして開くと、ブラウザのダウンロードウィンドウは表示されません。通常の場合(モードなし、window.openを使用して開く)ポップアップのダウンロードは正常に動作します。
また、ファイルをダウンロードする別の方法を試してみました。 ibtnExport_Click
に応答ヘッダーを設定する代わりに、別のaspxページ、たとえばDownload.aspxをwindow.open
で開き、Download.aspxのページロード時にrepsonseヘッダーを設定しました。以下に示すようにコードは、
Protected Sub ibtnExport_Click(ByVal sender As Object, ByVal e As System.Web.UI.ImageClickEventArgs) Handles ibtnExport.Click
...
Some business logic to generate excel file.
...
Session("$FileToDownload$") = someXLSFileWithPath
ClientScript.RegisterStartupScript(GetType(String),"download","window.open('Download.aspx')",true)
End Sub
され、Download.aspx、
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim filetoDownload As String = CType(Session("$FileToDownload$"), String)
Dim fileName As String = System.IO.Path.GetFileName(filetoDownload)
Response.ClearHeaders()
Response.ContentType = "application/ms-excel"
Response.AddHeader("content-disposition", "attachment; filename=" + fileName)
Response.TransmitFile(filetoDownload)
Response.Flush()
HttpContext.Current.ApplicationInstance.CompleteRequest()
End Sub
でまあ、それは両方のモーダルだけでなく、モードレスポップアップの場合で動作し、アプリケーションをデプロイするまでrelifeを与えますIIS上で:)。はい、このアプローチはASP.NET開発サーバーでは機能しますが、IISでは機能しません。
モーダルポップアップウィンドウをダウンロードするためのアイデアはありますか?
あなたのページに が設定されていると思うので、ハイパーリンクのターゲットを_blankに設定するだけで済みます。 –
cstruter