#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-страница автоматически скроется.