【发布时间】:2012-09-18 08:11:51
【问题描述】:
我有一个包含多个控件的 aspx 页面。当我单击此页面上的按钮时, 我需要获取文本框和下拉列表的值并进行一些处理并将其传递到另一个 aspx 页面。第二个 aspx 将进行进一步处理并生成要下载的 pdf。 我不希望用户被重定向到第二页。我只是希望 pdf 下载出现在新窗口中。 我怎样才能做到这一点?
【问题讨论】:
标签: asp.net pdf-generation http-redirect
我有一个包含多个控件的 aspx 页面。当我单击此页面上的按钮时, 我需要获取文本框和下拉列表的值并进行一些处理并将其传递到另一个 aspx 页面。第二个 aspx 将进行进一步处理并生成要下载的 pdf。 我不希望用户被重定向到第二页。我只是希望 pdf 下载出现在新窗口中。 我怎样才能做到这一点?
【问题讨论】:
标签: asp.net pdf-generation http-redirect
需要设置Content-Dispositionhttp头,直接返回pdf。
像这样:
Response.ContentType = "application/x-download";
Response.AddHeader("Content-Disposition", string.Format("attachment; filename=\"{0}\"", fileName));
Response.WriteFile(filePath + fileName);
Response.Flush();
Response.End();
注意:不要将Content-Disposition 设置为application/pdf,因为许多浏览器都可以识别它,它们会尝试使用浏览器中嵌入的 pdf 阅读器打开它。
如何在点击按钮时发布到第二页?
在您的按钮单击上设置 PostbackUrl,如下所示:
<asp:Button
ID="Button1"
PostBackUrl="~/TargetPage.aspx"
runat="server"
Text="Submit" />
您可以通过使用PreviousPage 属性访问控件来从目标页面上的当前页面读取值,如下所示:
TextBox SourceTextBox =
(TextBox)Page.PreviousPage.FindControl("TextBox1");
if (SourceTextBox != null)
{
Label1.Text = SourceTextBox.Text;
}
【讨论】: