c# - 导出 Excel 数据时重定向到操作不起作用
问题描述
public ActionResult FileDownload(Files FileData)
{
dynamic data = FileDownload(FileData);
var Platform= Enum.Parse(typeof(Platform),FileData.PlatformNo.ToString());
var fileName = "_Orders_" + FileData.CountryCode + "_" + FileData.Month
+ "_" + FileData.Year + "_" + Platform + "_" + FileData.Currency;
var workSheetName = "_File";
ExcelHelper.ExportToExcel(data, workSheetName, fileName, "A1:Y1", Response, 6, 7, 8);
return RedirectToAction("AzureDetail", new { id = FileData.FileId, FileData });
}
<td>
<a ng-click="post('/Plan/FileDownload',FileData)" class="btn btn-primary btn-xs">Download</a>
</td>
通过运行这段代码,我无法调试到 azure detail view,它不调试RedirectToAction
。
此外,我想同时下载 Excel 文件并执行页面刷新。我经历了许多解决方案,说“页面刷新和下载不能在一个响应中处理”或“你可以在 JavaScript 中通过setTimeout()
”来处理。
有什么我只能在后面的代码中使用的东西吗?
解决方案
该操作只能有一个结果。您不能同时下载文件并重定向到另一个操作,因为这是两个操作结果。
许多网站所做的是他们在弹出选项卡/窗口中打开下载文件的操作。这样,您当前的窗口仍然能够运行 JavaScript/Ajax 来执行其他操作,例如重定向到另一个页面。但是这种解决方案的缺点是使用现代浏览器阻止的弹出窗口,因此用户必须接受允许您网站的弹出窗口(临时或永久)。
正如您在问题中提到的,您也可以通过使用setTimeout()
或其他机制在 JavaScript 中处理此问题。如您所见,任何解决此困境的方法都涉及以一种或另一种方式使用 JavaScript。那是因为服务器只能用一个响应来响应客户端。因此必须使用 JavaScript 向服务器发送多个请求。
推荐阅读
- postgresql - PostgreSQL 更新查询性能问题
- sql - 在 SQL 中提取嵌套的 JSON 字段
- javascript - 如何创建 Google 表格宏/应用程序脚本以打开新添加的文件并将数据复制到主文件?
- duplicates - python pandas_dedupe 加载和集群文件缓慢
- aws-api-gateway - AWS API Gateway 计数 4xx 错误多于调用
- postgresql - 当用户名匹配时插入
- wear-os - 我可以从 WearOS 应用程序将锻炼数据记录到 GoogleFit 吗?
- python - 在 Python 中使用字典的值用字典的键标记列
- json - 将结构转换为用`firestore:“field_name”`注释的映射
- slack-api - Slack 快捷方式响应返回 HTTP/400