2015-06-05 45 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。 –