javascript - 每次提交页面时显示加载器 MVC Asp.net

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

我试过了,但根本不起作用。

提前致谢。

最佳答案

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

如果您想显示加载程序直到页面完全加载,则:

首先,从 Spinner 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>

关于javascript - 每次提交页面时显示加载器 MVC Asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56973776/

相关文章:

asp.net-mvc - 如何让 MvcBuildViews 在出错时继续其他 View ?

javascript - 如何在单个文本区域中使用多个字体?

c# - 删除没有后代的 XML 节点

c# - 专注于具有属性 TextMode ="MultiLine"的文本框,用于输入按键

asp.net - 尝试从 vmware fusion 进行 asp.net mvc 开发

c# - 在 View 中显示字符串?

javascript - Kaltura:提示点不会立即触发

javascript - 在 React 应用程序中使用相同依赖项的不同版本

javascript - 使用 jquery 更改使用 Jquery 创建的元素的背景

c# - Web API 中的更新方法 : How to know which fields to update?