是否可以返回文件以供下载并从控制器方法调用更新视图?
或需要解决方法,可能使用javascript(加载后调用页面刷新)?
文件下载是根据ViewModel中设置的参数动态创建的 (从页面上的各种控件中搜索参数)。
答案 0 :(得分:7)
您可以使用操作中的ViewModel或ViewData返回文件地址,并使用window.location.href
,如视图末尾的以下代码所示。
<强>控制器强>
public ActionResult Index()
{
/* ... */
ViewBag.FileName = "{FileName}";
return View();
}
public ActionResult Download(string id) {
/* ... */
return File("{Path}", "{MIME type}", "{Desired file name}");
}
<强>标记强>
<script type="text/javascript">
window.location.href = "/home/download/" + "@Ajax.JavaScriptStringEncode(@ViewBag.FileName)";
</script>
答案 1 :(得分:2)
虽然无法将ViewResult与ViewResult一起返回,但您可以在返回的视图上使用元刷新,以便在页面加载后重定向到该文件。
<meta http-equiv="refresh" content="600;url=/path/to/the/file" />
答案 2 :(得分:1)
一个请求可以有一个响应,响应头中定义了响应类型,因此基本答案为否 你可以看到做的是返回一个包含javascript的视图,然后请求文件下载。