(使用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");
}
开始下载。
有没有办法检测此返回浏览器端?
答案 0 :(得分:1)
您需要查看signalR以将进度推送到客户端或使用基本轮询进度的技术。例如,我必须升级一个报表,该报表为单个用户呈现pdf / excel文件,以便为广泛的用户呈现报表。我能够剖析处理,以便如果用户请求45个用户报告,那么我可以制定一个进度指示器,在客户端上为45个报告中的每个报告更新。
这对我来说并不是一件好事。我用Dino Esposito的this文章作为起点。简而言之,它允许客户端使用taskID轮询访问时,在计时器上轮询控制器方法以获取进度。我不得不修改代码以满足我的需求,但它最终按预期工作。