FileResult返回时执行JavaScript

时间:2014-04-01 00:09:54

标签: c# javascript jquery asp.net-mvc

(使用ASP.NET MVC)我正在开发一个页面,在按钮点击时生成一个excel“报告”。报告的内容取决于用户选择,因此生成可能需要5秒,或者可能需要30秒。

我试图找出生成excel文件后如何执行浏览器端代码并​​开始下载,以便我可以显示加载消息并为他们提供生成其他报告的选项。

当用户点击生成报告按钮时,我正在提交表单:

$("#genReportBtn").click(function () {
  ...processing stuff...
  $("#genContractForm").submit();       
});

哪个链接到服务器端的FileResult类型函数:

public FileResult GenReport(...Variables...)
{
    ...Generating Excel File...

    return File(output.ToArray(),
        "application/vnd.ms-excel",
        "report.xls");
}

开始下载。

有没有办法检测此返回浏览器端?

1 个答案:

答案 0 :(得分:1)

您需要查看signalR以将进度推送到客户端或使用基本轮询进度的技术。例如,我必须升级一个报表,该报表为单个用户呈现pdf / excel文件,以便为广泛的用户呈现报表。我能够剖析处理,以便如果用户请求45个用户报告,那么我可以制定一个进度指示器,在客户端上为45个报告中的每个报告更新。

这对我来说并不是一件好事。我用Dino Esposito的this文章作为起点。简而言之,它允许客户端使用taskID轮询访问时,在计时器上轮询控制器方法以获取进度。我不得不修改代码以满足我的需求,但它最终按预期工作。