C# MVC Problem z animacją podczas wykonywania akcji.

0

Witam serdecznie.

Mój problem polega na wyświetlaniu gifa "Proszę czekać" podczas wykonywania długo trwającej operacji (umieszczenie 10 mln kodów z pliku txt w bazie danych - czas około 1 min).

Controller:

        public ActionResult InsertCodesToDB(string name)
        {
            //odczyt z pliku kodów, parsowanie, import kodów do bazy danych
            return View("UploadFile", CreateViewModel(fl.FilesInUploadDir(), 0, 0));
        }

View:

<body>
    @if(Model.webStatus == 0)
    {
        
        using (Html.BeginForm("UploadFile", "ActualCodes", FormMethod.Post, new { enctype = "multipart/form-data" }))
        {   
            @Html.AntiForgeryToken()
            
             ---


                                        <input type="button" class="btn btn-success" id="sendCodesToDB" value="Umieść kody w bazie" onclick="location.href='@Url.Action("InsertCodesToDB", "ActualCodes", new {name = item.Name})'" />
               
            ....             
                <div id="ttt">
                    <p class="text-info" style="font-size: large; text-align: center" id="lblSelectedProductName">TEST22</p> 
                </div>

                <div id="loading">
                    <img src="~/Content/loading.gif">
                </div>
        }
    }

    @if (Model.webStatus == 1)
    {
        <div id="loading">
            <img src="~/Content/loading.gif">
        </div>
    }

    <script>
    $(document).ready(function () {
        $('#loading').hide();
        $('#ttt').hide();
    });

    $("#sendCodesToDB").click(function () {
        $('#loading').show;
        $('#lblSelectedProductName').text('Trwa umieszczanie kodów w bazie danych   . Proszę czekać ...');
        $('#ttt').show();

    });
    </script>

</body>

Oczywiście pominąłem sporą część z Widoku.
W momencie użycia przycisku sendCodesToDB wszystkie divy zostają ukryte prawidłowo jednak gif znajdujący się w "loading" przestaje działać (nie kręci się)

Próbowałem również użyć następującej opcji w Controlerze:

	        public ActionResult InsertCodesToDB(string name)
        {

            Task.Run(() =>
            {
                //odczyt z pliku kodów, parsowanie, import kodów do bazy danych
                return View("UploadFile", CreateViewModel(fl.FilesInUploadDir(), 0, 0));
            });


            return View("UploadFile", CreateViewModel(fl.FilesInUploadDir(), 1, 0));
        }

jednak return View ... znajdujący się w Tasku już nie wywołuje strony.

Przepraszam jeżeli mój problem jest trywialny lub źle opisany. Jak widać to mój pierwszy post. Jestem również początkującym "pisarzem".

Wszelkie uwagi, krytykę oraz porady przyjmuję z wielką wdzięcznością.

0

Wyślij ten plik ajaxem. Po kliknięciu wyświetlasz ładowanie. Na on onError i onSuccess ukrywasz. W web configu będziesz musiał pewnie pozmieniać upload size jeśli tego jeszcze nie zrobiłeś.

0

Plik już jest po uploadzie. Teraz już tylko jest zamiana na datatable i następnie bulkCopy do bazy i to trwa. Podczas uploadu pliku na serwer gif działa prawidłowo. (Upload nie wywołuje innej akcji).

1 użytkowników online, w tym zalogowanych: 0, gości: 1