2013-06-04 21 views
1

Есть ли событие jquery, которое запускается при завершении работы контроллера ASP.NET MVC 3 с его работой?Событие JQuery, которое срабатывает при завершении работы контроллера MVC

У меня есть ссылка на странице 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 blockscreenфункции. Затем контроллер создает файл, и пользователь получает диалог загрузки файла. У меня есть другая функция 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" }) 
Смежные вопросы