Мне нужно вызвать результат действия для создания и загрузки файла Excel, но я хотел бы показать сообщение, если что-то пойдет не так. Это ASP.NET Core 2.
Генерация не является проблемой, а также загрузка, но у меня есть проблемы с тем, как вызвать это действие и показать сообщение при возникновении ошибки.
Чтобы скачать файл, я обычно делаю:
[HttpGet]
public IActionResult MyFileDownload(int id)
{
if (id == 0) MESSAGE;
var filePath = GenerateAndSaveExcel(id);
if (string.IsNullOrEmpty(filePath)) MESSAGE;
using (var webClient = new System.Net.WebClient())
{
return File(new MemoryStream(webClient.DownloadData(filePath)), "application/pdf", "myfile.xlsx");
}
}
Функция GenerateAndSaveExcel просто создает новый файл Excel, используя ClosedXml (если кому-то интересно, я могу поделиться тем, что я делаю) и возвращает путь к новому файлу.
Я вызываю функцию следующим образом:
<a asp-action="MyFileDownload" asp-controller="myController">download</a>
Но я хотел бы изменить способ вызова функции, потому что, если id=0 или что-то пойдет не так в функции генерации, я бы хотел отправить сообщение, обычно я использую для этого сын и показываю его с помощью javascript.
Это может быть так просто, но я не вижу способа сделать это. Возможно, вызов Ajax мог бы решить эту проблему, но я не знаю, как управлять загрузкой.
Другое дело, что мне нравится скачивать таким образом, чтобы файл сразу попадал в папку для скачивания.
Спасибо.