2013-06-04 61 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" })