我正在尝试提供一个linkbutton(asp),它在c#中附加了一个click功能。当用户点击链接按钮时,后端代码会向用户发送pdf文件以供下载。
我已经完成了代码,似乎在打开页面时下载了该文件。但在我的一个案例中,它打开页面作为Windows对话框。
在这种情况下,当我点击链接按钮时,代码会执行,但不会发生下载操作。在使用windows.open打开的“窗口”对话框中加载相同页面时,文档的下载失败。
例如:父页面:Dashboard.aspx 子页面:DownloadFormatSelector.aspx 我导航到localhost / DownloadFormatSelector.aspx页面并单击"下载"按钮浏览器(IE)显示"另存为","打开"的选项。
但是如果我使用window.showModalDialog从仪表板打开DownloadFormatSelector.aspx页面。下载不会发生 例如:localhost / Dashboard.aspx和DownloadFormatSelector.aspx页面在使用window.showModalDialog的内部打开。
我很困惑为什么当页面在window.showModalDialog中呈现时,它不会下载文档或显示另存为选项。
以下所有代码都存在于DownloadFormatSelector文件中。
Dashboard.aspx只是父窗口。我可以在子窗口导航到(像localhost / DownloadFormatSelector.aspx)时执行下载,但是在window.showModalDialog中打开同一页面我无法下载文件,页面没有显示任何保存为或以下开放选项。我可以修改什么来执行showmodaldialog
中的页面保存代码c#click:
public void DownloadButton_Click(Object sender, EventArgs e)
{
byte[] data=GetData();
Response.Clear();
Response.AddHeader("Content-Disposition",
String.Format("attachment;filename={0}", "temp.pdf"));
Response.ContentType = "application/pdf";
Response.BinaryWrite(data);
Response.End();
}
Asp.Net
<asp:LinkButton id="Link" Text="Download" OnClick="DownloadButton_Click" runat="server"/>
打开为窗口对话框:
window.showModalDialog JS method to call another aspx page to be rendered inside the dialog window
答案 0 :(得分:0)
您正在寻找Response.TransmitFile
。以下是您的工作方式:
public void DownloadButton_Click(Object sender, EventArgs e)
{
var filePath = "path to your file";
Response.ContentType = "application/octet-stream";
Response.AppendHeader("Content-Disposition","attachment; filename=whatever.ext");
Response.TransmitFile(filePath);
Response.End();
}