MVC - 在下载文件之前和之后加载屏幕/禁用按钮

Whe*_*els 5 javascript c# jquery download asp.net-mvc-4

所以我有一个下载csv文件的按钮.按钮简单:

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

我的动作只是返回一个

File(new System.Text.UTF8Encoding().GetBytes(csv), "text/csv", filename);
Run Code Online (Sandbox Code Playgroud)

一切都很好.现在,因为我在按下按钮时正在构建一个csv,因为这个过程可能需要一些时间,所以我想建立一个加载屏幕或者只是在等待时禁用按钮.我的问题是如何禁用/启用按钮?

我尝试了以下但它不起作用,因为浏览器被重定向到另一个页面,它将停止执行我的Javascript.

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

但它不起作用.有人有解决方案吗?

Nit*_*rpe 0

您可以在每次页面准备好或加载时设置disabled属性。false

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

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

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

检查此以了解更多信息