【问题标题】:Download button not function下载按钮不起作用
【发布时间】:2016-01-20 02:07:53
【问题描述】:

我有一个问题,之前这段代码可以正常工作。如果我点击按钮,它可以下载excel文件。但是现在这个按钮不起作用,我不确定哪个部分不正确。

我有两个用于此功能的文件:

<tr>
    <td class="col-md-3"><b>Template File:</b></td>
    <td class="col-md-9">
        <asp:Button ID="btnDownloadTemplate" runat="server" OnClick="btnDownloadTemplate_Click" Text="Download Template" CssClass="btn btn-primary" />
    </td>
</tr>

protected void btnDownloadTemplate_Click(object sender, EventArgs e)
{
    FileInfo file = new FileInfo(Server.MapPath("~/Images/ACCUploads/ACCTemplate/AppleCareDevices.xlsx"));
    if (file.Exists)
    {
       Response.ContentType = "Application/xlsx";
       Response.AppendHeader("Content-Disposition", "attachment; filename=AppleCareDevices.xlsx");
       Response.TransmitFile(Server.MapPath("~/Images/ACCUploads/ACCTemplate/AppleCareDevices.xlsx"));
       Response.End();

   }
}

【问题讨论】:

  • 您是否尝试过在btnDownloadTemplate_Click 方法中设置断点,并查看每一行代码是否实际正在执行?我的第一个猜测是该文件不再存在于从"~/Images/ACCUploads/ACCTemplate/AppleCareDevices.xlsx" 映射的路径中。最好的检查方法是调试代码,看看file.Exists 是否为真。
  • 在浏览器中按 F12 并检查控制台面板中是否有任何错误消息。如果有任何错误,请发布。
  • 你添加了更新面板吗?还是添加了使页面的有效状态为假的asp验证器?
  • Vlad Bezden:未捕获 Sys.WebForms.PageRequestManagerParserErrorException:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用服务器跟踪来修改响应。详细信息:在“PK!b��h^”附近解析错误。
  • Elezar:我检查了文件,这个文件存在。这个问题突然发生在我们的生产和开发中。两者都使用相同的代码。

标签: c# asp.net


【解决方案1】:

不确定这是否是问题所在,但看起来代码的 MIME 类型不正确。尝试将其更改为:

Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.AppendHeader("Content-Disposition", "attachment; filename=AppleCareDevices.xlsx");
Response.TransmitFile(Server.MapPath("~/Images/ACCUploads/ACCTemplate/AppleCareDevices.xlsx"));
Response.End();

【讨论】:

  • 我更改了代码,但按钮也不起作用。我尝试在浏览器中按 F12 并得到错误,Uncaught Sys.WebForms.PageRequestManagerParserErrorException: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed.此错误的常见原因是通过调用 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。详细信息:在 'PK!b��h^' 附近解析出错。
  • 您有任何 HttpModules 或响应过滤器吗?根据你得到的异常,这将是我的猜测。
  • 你能指导我吗,因为我对此并不熟悉。
  • 这些是可以在您的代码和/或 web.config 中设置的内容。如果您在公司中,它也可以由公司 IT 设置。要了解有关模块的更多信息,请查看 msdn.microsoft.com/en-us/library/bb398986.aspx。响应过滤器不太常见。 SO 有很多关于它们的问题,您可以查看更多信息。
猜你喜欢
  • 2014-12-16
  • 1970-01-01
  • 2021-03-05
  • 2019-02-25
  • 2019-07-11
  • 1970-01-01
  • 1970-01-01
  • 2015-06-09
  • 1970-01-01
相关资源
最近更新 更多