当我单击按钮从控制器下载文件时,在此期间服务器返回文件我要禁用按钮,并在文件返回后,我想启用按钮。但实际上,我的代码不工作。按钮似乎总是被启用。
查看:
//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");
}
答案 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。