0

Excelシートを作成し、ユーザーにそれをどこかに保存するように促し、それを電子メールに添付してどこかに送信するコードがあります。Response.end() がある場合はすべて正常に機能しますが、新しいページにリダイレクトするためにこれを削除したいと思います。それを削除して response.redirect に置き換えると、ユーザーに保存するように求められません。これがもう保存を促さない理由はありますか?

Excelシートを作成/保存するコード

    Protected Sub ExportToExcel(sender As Object, e As EventArgs, ByVal strPath As String)
    Response.ClearContent()

    Response.AddHeader("content-disposition", "attachment; filename=GridViewToExcel.xls")

    Response.ContentType = "application/excel"

    Dim sWriter As New StringWriter()

    Dim hTextWriter As New HtmlTextWriter(sWriter)

    Dim hForm As New HtmlForm()

    Panel1.Parent.Controls.Add(hForm)

    hForm.Attributes("runat") = "server"

    hForm.Controls.Add(Panel1)

    hForm.RenderControl(hTextWriter)

    ' Write below code to add cell border to empty cells in Excel file
    ' If we don't add this line then empty cells will be shown as blank white space

    Dim sBuilder As New StringBuilder()

    sBuilder.Append("<html xmlns:v=""urn:schemas-microsoft-com:vml"" xmlns:o=""urn:schemas-microsoft-com:office:office"" xmlns:x=""urn:schemas-microsoft-com:office:excel"" xmlns=""http://www.w3.org/TR/REC-html40""> <head><meta http-equiv=""Content-Type"" content=""text/html;charset=windows-1252""><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>ExportToExcel</x:Name><x:WorksheetOptions><x:Panes></x:Panes></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head> <body>")
    sBuilder.Append(Convert.ToString(sWriter) & "</body></html>")

    Response.Write(sBuilder.ToString())

    Dim fStream As FileStream = File.Create(strPath)
    fStream.Close()
    Dim Writer As New StreamWriter(strPath)
    Writer.Write(sBuilder)
    Writer.Flush()
    Writer.Close()
End Sub

リダイレクトするために実行される最後のコード

Response.Redirect("~/Default.aspx")
4

1 に答える 1

1

あなたがしていることは、保存プロンプトの応答を送信し、リダイレクトの応答を送信することです。1 回の応答でどちらか一方しか送信できません。

代わりにできることは、ダウンロードしているページを新しいタブ/ウィンドウで開いてから、呼び出し元のページを にリダイレクトすること~/Default.aspxです。

于 2013-03-06T22:03:23.200 に答える