Отображение индикатора занятости во время работы контроллера

#c# #asp.net-mvc #download

Вопрос:

У меня сейчас проблема, и я надеюсь, что вы сможете мне помочь.

Моя проблема в том, что у меня есть контроллер, в котором я создаю файл в виде ByteArray (без сохранения его на жестком диске), который я возвращаю для загрузки. Эти действия занимают до 5-6 секунд, пока они не будут сгенерированы. Теперь я хотел бы отобразить индикатор занятости для пользователя, но я не знаю, как я могу определить, когда мой контроллер будет готов!?

Вот мой код:

Это код для вызова моего действия контроллера в моем «View.cshtml».:

 <a href="@Url.Action("DownloadAnalysis", "Analysis")" title="Get analysis file"><span class="fa fa-bar-chart"></span></a>
 

Это мой код контроллера:

 public ActionResult DownloadAnalysis()
{
        var response = StartAnalysis();

        if (response.AnalysisByteArray != null amp;amp; response.AnalysisByteArray.Length > 0)
        {
            var cd = new System.Net.Mime.ContentDisposition
            {
                FileName = response.FileName,
                Inline = false,
            };
            Response.AppendHeader("Content-Disposition", cd.ToString());
            return File(response.AnalysisByteArray , "text/csv");
        }

        return null;
}
 

Я заранее благодарю вас за вашу помощь!

с уважением

Ответ №1:

Вместо тега привязки используйте событие button и onclick для вызова контроллера. ваш html-код должен быть таким

 <button title="Get analysis file" onclick="getFile()"><span class="fa fa-bar-chart"></span></button>
 

и в окне использования JavaScript.местоположение для вызова действия контроллера

 <script>
    function getFile(){
         //here you can add script to change cursor to progress of add some html element to show loading.
         window.location.href = '/Analysis/DownloadAnalysis/';
    }
</script>
 

Комментарии:

1. Хорошо, спасибо за ваш ответ! В функции «GetFile»я могу установить, например, индикатор занятости, но как я узнаю, когда действие будет выполнено, и я смогу скрыть индикатор занятости?

2. Я не уверен в типе файла, если файл будет открыт в браузере, то ваша текущая html-страница автоматически скроется.

3. Я не уверен в типе файла, если файл будет открыт в браузере, то ваша текущая html-страница автоматически скроется.