Próbuję wygenerować plik PDF w locie w czasie wykonywania z bazy danych, Aplikacja działa dobrze, ale zastanawiam się, czy mogę wyświetlić pasek postępu do momentu wygenerowania pliku pdf with out using ajax.

Oto moja akcja generowania pliku PDF

public ActionResult GeneratePDF(){
    //This Generates PDF
    return ...
}

Teraz chcę wyświetlać informacje o pasku postępu, dopóki nie zostanie wygenerowany plik PDF, coś takiego

public ActionResult GeneratePDF(){
        //show progress
        ...............
        //This Generates PDF
        return View();
    }

public ActionResult ShowProgress(){
   //Show progress

    ......
    //return to GeneratePDF to show pdf when it is ready
    return RedirectToAction("GeneratePDF");
}

Doceniam wszelkie sugestie, jak sobie z tym poradzić.

1
tkt986 9 sierpień 2011, 03:17

2 odpowiedzi

Najlepsza odpowiedź

Nie sądzę, że możesz to zrobić. Nawet jeśli mógłbyś kontynuować w ten sposób po stronie serwera, gdy przeglądarka otrzyma odpowiedź na swoje początkowe żądanie, nie będzie wiedziała, co zrobić z innymi, które nadejdą później.

Protokół HTTP jest zasadniczo oparty na koncepcji żądanie-odpowiedź, żądanie-odpowiedź - i to przeglądarka znajduje się w miejscu kierowcy, a nie serwer. AJAX to droga do tego rodzaju bogactwa interfejsu użytkownika po stronie klienta.

1
Andrew Cooper 9 sierpień 2011, 03:21
Dzięki za powtórkę. Właśnie to mam na myśli, zastanawiałem się tylko, czy istnieje sposób i masz rację, ostatnią opcją będzie użycie Ajax.
 – 
tkt986
9 sierpień 2011, 03:26
Jak powiedziałem, sama natura protokołu HTTP uniemożliwiłaby to działanie. Jedyną inną możliwością byłoby użycie frameworka po stronie klienta, który ukrywa przed tobą rzeczy AJAX. Nie wiem, jeśli coś takiego istnieje.
 – 
Andrew Cooper
9 sierpień 2011, 03:28

Możesz użyć JavaScript lub jQuery, aby wyświetlić animowany gif ładujący.

To znaczy:

$('.ładowanie').show();

0
evasilchenko 9 sierpień 2011, 03:26