asp.net - Server.Execute() 调用asp文件后再次执行点击处理程序
问题描述
我正在尝试使用 Winnovative Tools 生成 PDF。在单击“打印 PDF 按钮”后触发的单击处理程序中,我有以下代码。
我希望在调用 Server.Execute() 后控制恢复到 printPDF_Click 子例程,但它会从头开始调用 printPDF_Click 子例程,这会导致循环,因为 Server.Execute() 将再次被调用,依此类推。
当我将preserveForm设置为False时,它按预期工作,但随后我丢失了表单数据,重点是保留它。
Private Sub printPDF_Click(sender As Object, e As EventArgs) Handles printPDF.Click
Dim outTextWriter As IO.TextWriter = New IO.StringWriter()
Server.Execute("Default_v3.aspx?isWinnovative=true", outTextWriter)
Dim baseUrl As String = HttpContext.Current.Request.Url.AbsoluteUri
Dim htmlStringToConvert As String = outTextWriter.ToString()
Dim downloadBytes As Byte() = PdfHelper.CreatePdf(htmlStringToConvert, baseUrl)
Dim response As HttpResponse = HttpContext.Current.Response
response.Clear()
response.AddHeader("Content-Type", "binary/octet-stream")
response.AddHeader("Content-Disposition", ("attachment; filename=" + (
"Rendered.pdf" + ("; size=" + downloadBytes.Length.ToString))))
response.Flush()
response.BinaryWrite(downloadBytes)
response.Flush()
response.End()
End Sub
解决方案
推荐阅读
- node.js - 如何在 Reactjs 上使用 useEffect 成功发布后立即加载数据
- javascript - 第二个弹出窗口不显示在点击
- django - 在多对多关系中从 QuerySet 中排除 QuerySet
- aws-cdk - 有没有办法在由 logRetention 参数创建的 aws-cdk 中强制使用 Lambda 自定义资源名称?
- visual-studio-code - 快速将复制到剪贴板的内容(格式化文本、图像)转换为本地降价文件和图像
- php - 如何在 codeigniter 4 中使用 $this->session->set_userdata 和 $this->session->userdata('adminId')
- mysql - 在 SQL 中创建具有多个值的列的表
- python - 使用 python 在用户终端中输入命令
- scala - 具有选项类型的类参数是否不需要传递值?
- java - IE 浏览器未在 Windows /Linux jenkins 中启动,我的测试都挂在“这是初始起始页”Selenium java