У меня есть кнопка на сайте, которая должна - при нажатии - создать файл PDF и вернуть его в новой вкладке браузера.Но мне нужно вернуть его только после того, как метод завершит создание файла.И это должно быть в контроллере, потому что я использую ControllerContext
в моей логике.
Я попытался сделать асинхронный контроллер, но он начинает перенаправление, как только я нажал кнопку.
Я думал о Ajax.Actionlink
-но в этом случае он не может сделать return.File()
.
Как я могу сделать фоновый вызов контроллера и перенаправить только после создания метода файла?
Приложение Asp.Net MVC.
Мой взгляд:
@Html.ActionLink("Выгрузка", "Unload", null, new { @class = "btn btn-primary btn-lg", @target = "_blank" })
// or this
@Ajax.ActionLink("Create Pdf", "Unload", new AjaxOptions { HttpMethod = "GET" })
Контроллер:
[Authorize]
[HttpGet]
public async Task<ActionResult> Unload()
{
byte[] viewData = view.BuildFile(ControllerContext);
...
byte[] combinedViewData = await Task.Run(()=> combineViewData(viewDatas));
return File(combinedViewData, "application/pdf");
}