Отображать загрузчик каждый раз, когда страница отправлена ​​MVC Asp.net - PullRequest
1 голос
/ 10 июля 2019

Как я могу загрузить изображение или текст при каждой отправке страницы в MVC Asp.net?Итак, в основном я не хочу повторять код на каждой странице, я хотел бы отображать изображение или текст при отправке формы (независимо от того, где они находятся в приложении) и / или лучший способ позволить пользователямстраница загружается.

вот код в _layout.cshtml

<div class="spinner" style="display:none">
    <div class="center-div">
        <div class="inner-div">
            <div class="loader"></div>
        </div>
    </div>
</div>
@RenderBody()

это код JavaScript, который я кодировал для захвата всех кнопок отправки:

<script>
    $(document).ready(function () {
        $(document.querySelectorAll("button[type=button]")).click(function () {
            $('.spinner').css('display', 'block');
        });
    });
</script>

И наконецпростой CSS:

<style>
    .center-div {
        width: 300px;
        height: 300px;
        position: absolute;
        left: 50%;
        top: 50%;
        margin-left: -150px;
        margin-top: -150px;
    }

    .spinner {
        position: fixed;
        z-index: 999;
        height: 100%;
        width: 100%;
        top: 0;
        left: 0;
        background-color: Black;
        filter: alpha(opacity=60);
        opacity: 0.6;
        -moz-opacity: 0.8;
    }

    .loader {
        margin: auto;
        border: 16px solid #f3f3f3;
        border-radius: 50%;
        border-top: 16px solid #15a0ec;
        border-bottom: 16px solid #15a0ec;
        width: 120px;
        height: 120px;
        -webkit-animation: spin 2s linear infinite;
        animation: spin 2s linear infinite;
    }

    .inner-div {
        background-color: white;
        border-radius: 15px;
        margin: auto;
        padding: 2%;
        width: 150px;
    }

    @@-webkit-keyframes spin {
        0% {
            -webkit-transform: rotate(0deg);
        }

        100% {
            -webkit-transform: rotate(360deg);
        }
    }

    @@keyframes spin {
        0% {
            transform: rotate(0deg);
        }

        100% {
            transform: rotate(360deg);
        }
    }
</style>

Я пробовал это, но это совсем не работает.

Заранее спасибо.

1 Ответ

1 голос
/ 10 июля 2019

В случае отправки формы Ajax:

$(document).ajaxSend(function (event, xhr, options) {

     $('.spinner').css('display', 'block');

}).ajaxComplete(function (event, xhr, options) {    

    $('.spinner').css('display', 'none');

}).ajaxError(function (event, jqxhr, settings, exception) {    

     $('.spinner').css('display', 'none');

});

Это будет обрабатывать загрузчик во всех ваших вызовах Ajax.

Если вы хотите показать загрузчик до полной загрузки страницы, тогда:

Сначала удалите «display: none» из вашего счетчика div

  <div class="spinner">
        <div class="center-div">
            <div class="inner-div">
                <div class="loader"></div>
            </div>
        </div>
    </div> 

, а затем в JS:

<script>
        $(window).on('load', function () {
            $('.spinner').css('display', 'none');            
        });
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...