2015-06-05 44 views
4

所以我有一个按钮来下载csv文件。按钮简单做:MVC - 下载文件前后加载屏幕/禁用按钮

$("#btnExportToContactList").click(function (e) { 
    window.location.href = '/Home/ExportList'; 
}); 

我的动作只是返回一个

File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", filename); 

一切工作正常。现在,由于我在按下按钮时构建了一个csv,并且由于该过程需要一些时间,所以我想放置一个加载屏幕,或者只需在等待时禁用该按钮。我的问题是如何禁用/启用按钮?

我已经尝试了以下,但它不工作,因为浏览器被重定向到另一个页面,它会停止执行我的Javascript。

$("#btnExportToContactList").click(function (e) { 
    $("#btnExportToContactList").attr("disabled", true); 
    window.location.href = '/Home/ExportList'; 
    $("#btnExportToContactList").attr("disabled", false); 
}); 

但它不工作。任何人都有这个解决方案?

+0

我需要的是一个方法来禁用文件下载 – Wheels

+0

后那么,你想沿着相同的路线每个用户或限制的东西只有一次下载? – lshettyl

+0

由于这是一个可能需要一些时间的过程,因此在准备要下载的文件时,我想禁用该按钮(因此不允许更多的点击)。只要文件准备就绪,我想重新启用按钮 – Wheels

回答

0

每次页面准备就绪或加载时,您可以将disabled属性设置为false

$(function(){ 
    $("#btnExportToContactList").attr("disabled", false); 

    $("#btnExportToContactList").click(function (e) { 
    $("#btnExportToContactList").attr("disabled", true); 
    window.location.href = '/Home/ExportList'; 
    }); 
}); 

更新:如果上述不工作,您可以尝试这样的解决方法。您可以调用window.location.href来调用控制器的动作,并使用ajax请求并返回包含在服务器上创建的文件的url的json resullt,然后在ajax调用成功之后,您可以使用一些javscript代码下载此文件,然后更改所需元素的禁用属性。

检查本作more

+0

我试过了,它不工作。由于我在做一个window.location.href它不会重新加载相同的页面。 – Wheels

+0

这是真的,但我不想在服务器上创建文件,如果没有必要。现在我试图找到另一种解决方案。 – Wheels

+0

不能发送另一个Ajax请求立即删除该文件?如果可能的话,不会有问题,因为你已经有了文件的URL。 –