为什么我的代码在mvc中下载文件后发出警报('已完成')时不起作用?

时间:2013-12-26 05:19:22

标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

当我单击按钮从控制器下载文件时,在此期间服务器返回文件我要禁用按钮,并在文件返回后,我想启用按钮。但实际上,我的代码不工作。按钮似乎总是被启用。

查看:

//disable the button
document.getElementById("downloadButton").disabled=true;
//download file    
window.location.href('@Url.Action("UserDetails", "GetFile")')
//enable the button
document.getElementById("downloadButton").disabled=false;

控制器:

public ActionResult GetFile()
{
//Product a file may take more than one minute  
Return File(Server.MapPath("~/App_Data/UserA/a.png"),"imge/png");
}

1 个答案:

答案 0 :(得分:1)

问题在于:

document.getElementById("downloadButton").disabled=true;
//download file    
window.location.href('@Url.Action("UserDetails", "GetFile")')
//enable the button
document.getElementById("downloadButton").disabled=false;

当您致电window.location.href()时,您正在更改页面的位置。就浏览器而言,该页面不再“存在”。由于您正在下载文件,因此它不会消失 - 但页面无法知道您的文件何时/已完成下载,并且无论如何它都会在此时停止执行您的Javascript。