2013-06-04 60 views
1

當ASP.NET MVC 3控制器完成它的工作時,是否發生jquery事件?MVC控制器完成時觸發的Jquery事件

我有一個MVC頁面上的鏈接,允許用戶下載文件。 MVC控制器返回一個文件。點擊鏈接時,我有一個jquery函數,在創建文件時鎖定屏幕。用戶然後獲得一個對話來保存文件。但是當文件實際返回給用戶時,我有另一個我想運行的jquery函數來解鎖屏幕。

這裏是我的代碼:

在MVC視圖:

@Html.ImageLink("Download as CSV", "Report", "GetCSVFile", "", Url.Content("~/Content/images/csv.png"), "Generate Report", null, null, null, true, "blockscreenfunction") 

在控制器:

public ActionResult GetCSVFile() 
{ 
    string fullName = service.initiateCsvGeneration(1); 
    string fileName = Path.GetFileName(fullName); 
    return File(fullName, "text/csv", fileName); 
} 

因此,在總結,當用戶開始下載,我鎖定屏幕jquery blockscreenfunction函數。然後控制器創建文件,用戶獲得文件下載對話框。我有另一個我用來解鎖屏幕的jquery函數。如何在控制器返回文件後執行此功能?

+1

這似乎不是一個有用的功能。爲什麼要在下載文件時鎖定屏幕?你有沒有在別的地方見過這個?最終,我認爲你能達到你所要求的唯一方法就是做這樣的事情'setTimeout(unblockscreenfunction,3000)' –

+0

我確實同意你的意見,但這些要求並不是由我設定的。也許我可以與其他人一起檢查,看看是否可以改變這個要求。 – carlg

+0

如果沒有,請查看http://geekswithblogs.net/GruffCode/archive/2010/10/28/detecting-the-file-download-dialog-in-the-browser.aspx –

回答

1

您可能想嘗試使用@Ajax.ActionLink。它有OnComplete屬性,您可以在其中設置解鎖屏幕的jQuery函數。

@Ajax.ActionLink("Download FIle", "ActionName", "ControllerName", ... , new AjaxOptions { HttpMethod = "POST", InsertionMode = InsertionMode.Replace, OnBegin = "LockScreenFunction", OnComplete = "UnlockScreenFunction", UpdateTargetId = "TargetElement" })