点击Linkbutton asp.net下载文件

时间:2017-09-05 15:17:29

标签: c# asp.net

我正在尝试提供一个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

1 个答案:

答案 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();
}