【问题标题】:Downloading file clicking on Linkbutton asp.net单击链接按钮 asp.net 下载文件
【发布时间】:2017-09-05 15:17:28
【问题描述】:

我正在尝试在 c# 中提供一个带有单击功能的链接按钮(asp)。当用户点击链接按钮时,后端代码会发送一个 pdf 文件给用户下载。

我已经完成了代码,并且似乎在打开页面时下载了文件。但在我的一种情况下,它会以窗口对话框的形式打开页面。

在这种情况下,当我单击链接按钮时,代码会执行,但不会发生下载操作。在使用 windows.open 打开的窗口对话框中加载相同页面时,文档下载失败。

例如:父页面:Dashboard.aspx 子页面:DownloadFormatSelector.aspx 我导航到 localhost/DownloadFormatSelector.aspx 页面并单击“下载”按钮,浏览器 (IE) 显示“另存为”、“打开”选项。

但是,如果我使用 window.showModalDialog 从仪表板打开 DownloadFormatSelector.aspx 页面。下载不会发生 例如:localhost/Dashboard.aspx 和 DownloadFormatSelector.aspx 页面使用 window.showModalDialog 在 ot 内部打开。

我不知道为什么当页面在 window.showModalDialog 中呈现时它不下载文档或显示“另存为”选项。

DownloadFormatSelector 文件中包含以下所有代码。

Dashboard.aspx 只是父窗口。当子窗口导航到(如 localhost/DownloadFormatSelector.aspx)时,我能够执行下载,但在 window.showModalDialog 中打开同一页面时,我无法下载文件,页面不显示任何另存为或打开下面的选项。我可以修改什么以在 showmodaldialog 内的页面上执行保存

代码c#点击:

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

【问题讨论】:

  • “将页面作为窗口对话框打开”是什么意思?这段代码应该向客户端发送一个文件,不清楚是什么问题。
  • 嗨大卫,我正在打开类似于这篇文章的 aspx 页面 window.open('child_page.html','name','width=200,height=200');.. 从这里链接stackoverflow.com/questions/5660700/…
  • "页面已加载到窗口对话框中"。什么窗口对话框?您的意思是您收到一条消息,询问您是要打开还是保存它?
  • @PradeepK:不要链接到可能与您的代码相似的东西,而是演示您在 your 代码中所做的事情。编辑问题以添加相关信息。准确说明失败的原因。例如,在您浏览器的调试工具中,服务器的实际响应是什么?
  • @PradeepK:那行 JavaScript 是如何与那个链接按钮相关联的?你如何防止回邮?该 HTML 页面如何执行您的服务器端代码?从您问题中的代码中不清楚您实际上在做什么。

标签: c# asp.net


【解决方案1】:

您正在寻找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();
}

【讨论】:

  • 您好 Bozhidar,感谢您的代码。但我的问题与 JS window.showModalDialog 有关,它不允许子窗口显示另存为或打开选项
猜你喜欢
  • 2011-10-16
  • 2015-08-17
  • 1970-01-01
  • 2019-04-29
  • 2018-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多