每次提交页面时显示加载程序MVC Asp.net

时间:2019-07-10 15:13:03

标签: javascript asp.net asp.net-mvc model-view-controller

每次在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 个答案:

答案 0 :(得分:1)

如果使用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调用中的加载程序。

如果要在页面完全加载之前显示加载器,则:

首先,从微调器div中删除“ display:none”

  <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>