Оставайтесь на странице, если ошибки асинхронного вызова - PullRequest
0 голосов
/ 25 июня 2018

У меня есть асинхронный метод, который вызывает API, а затем, если возвращенный ответ является PDF, он возвращает файл

Если ответ НЕ является PDF (то есть: объект JSON со значением ошибки)Как я могу остаться на текущей странице и просто отобразить сообщение об ошибке?

Приложение поддерживает Umbraco, и в настоящее время оно устанавливает ViewBag, а затем возвращает RedirectToCurrentUmbracoPage, что означает, что на странице отображается только объект JSON

public async Task<ActionResult> QuotationPdfAsync(DbCalculationInput calculation)
        {
            var content = await _apiClient.QuotationAsync(calculation);
            if (content.HasPdf)
            {
                var fileName = $"{calculation.CalculationName}_{DateTime.Now:yyyyMMdd}_{DateTime.Now:HHmmss}.pdf";
                return this.File(content.Pdf, "application/pdf", fileName);
            }

            this.ViewBag.FormError = content.ErrorResponse.FailureDescription;
            return this.RedirectToCurrentUmbracoPage();
        }

1 Ответ

0 голосов
/ 25 июня 2018
    public async Task<ActionResult> QuotationPdfAsync(DbCalculationInput calculation)
    {
        var content = await _apiClient.QuotationAsync(calculation);
        if (content.HasPdf)
        {
            var fileName = $"{calculation.CalculationName}_{DateTime.Now:yyyyMMdd}_{DateTime.Now:HHmmss}.pdf";
            return this.File(content.Pdf, "application/pdf", fileName);
        }
        else
        {
            this.ViewBag.FormError = content.ErrorResponse.FailureDescription;
            return Json("So and so error..");  
        } 
        return this.RedirectToCurrentUmbracoPage();
    }
...