我需要执行以下流程:用户将一些数据发布到操作中,然后接收文本文件并重定向到另一个操作。
因此,我需要在同一响应中返回两个“结果” File
和RedirectToAction
。有解决方案吗?
答案 0 :(得分:2)
首先建立这样的模型:
public class FileAndRedirect {
public string FileContentAsBase64 { get; set; }
public string FileName { get; set; }
public string RedirectURL { get; set; }
}
然后查看:
@model FileAndRedirect
<a style="display:none" id="linker" href="data:application/octet-stream;charset=utf-8;base64,@Model.FileContentAsBase64" download="@Model.FileName"></a>
<style>
document.getElementById("linker").click();
window.location = "@Model.RedirectURL";
</style>
现在您可以返回视图:
return View(new FileAndRedirect{ ... })
答案 1 :(得分:0)
通过根据内维尔·纳泽拉内(Neville Nazerane)的答案返回带有下载和重定向代码的html内容来解决此问题
return Content("<!DOCTYPE html>" +
"<html><head></head><body>" +
$"<a style=\"display:none\" id=\"linker\" href=\"data:application/octet-stream;charset=utf-8;base64,{Convert.ToBase64String(Encoding.UTF8.GetBytes(fileData))}\" download=\"filename.txt\"></a>" +
"</body>" +
"<script>document.addEventListener('DOMContentLoaded', function(){document.getElementById('linker').click(); window.location='/'}, false);</script>" +
"</html>", "text/html");