Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP.Net在新页面上显示加载覆盖_C#_Asp.net_Asp.net Ajax - Fatal编程技术网

C# ASP.Net在新页面上显示加载覆盖

C# ASP.Net在新页面上显示加载覆盖,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,我目前在ASP.net web表单网站中有两个页面。在第一页上,用户可以输入一些详细信息,然后按下按钮。然后,这将返回response.redirect,并将用户详细信息发送到下一页 下一页的页面负载为 protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { GetInformation(); }

我目前在ASP.net web表单网站中有两个页面。在第一页上,用户可以输入一些详细信息,然后按下按钮。然后,这将返回response.redirect,并将用户详细信息发送到下一页

下一页的页面负载为

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {   
            GetInformation();        
        }
    }
GetInformation()使用这些用户详细信息进行长时间的处理,大约需要15-20秒

当用户按下第一页上的按钮时,它会停留在第一页上,直到GetInformation()完成运行,然后它会加载新页

我想做的是,当用户按下按钮时,新页面出现,然后有一个覆盖显示loading之类的内容,然后让它启动GetInformation()。一旦GetInformation完成,覆盖将消失

我在谷歌上搜索了一下,看到了一些想法,但似乎没有一个真正适合我的问题

执行此操作的最佳方法是什么?

非常简单的解决方案:

  • 创建一个新页面
    Loading.aspx
    。添加适当的样式和所有内容,使其看起来像预期的加载页面

  • 在此页面中,在
    标记中添加以下标记:

  • 现在,不要直接重定向到
    LongLoadingPage.aspx
    ,而是重定向到
    Loading.aspx
    页面


    当然,这是一个quick-n-dirty解决方案,可能有更好的解决方案,使用AJAX请求初始化长时间运行的操作(使用
    UpdatePanel
    或vanilla
    XMLHttpRequest
    ).

    页面只有在
    页面加载
    事件完全执行后才会显示。因此,不要在
    页面加载
    事件中调用ur函数。而是使用计时器控件触发ur函数调用

    假设您添加了一个计时器控件,如

    <asp:Timer ID="tmr" runat="server" Interval="3000" OnTick="tmr_Tick" Enabled="true">
    </asp:Timer>
    
    现在,为了显示加载指示器,在页面上放置一个这样的div

    <div id="loadingIndicator" runat="server" style="background-image:url(ajax-loader-small.gif);background-repeat: no-repeat; width: 100%; height: 104px; background-position: center;">
    </div>
    
    
    
    默认情况下,加载指示器将显示,当
    GetInformation()
    完成执行后,我们可以更改显示


    希望这有助于……

    如何从服务器代码中显示加载指示器?到目前为止,您的当前代码无法正常工作,谢谢。我想还是需要调整一下我的代码,因为浏览器已经显示了它检索到的所有细节,但它仍然在标签上显示连接,好像它还在尝试做什么。如果你想让我查看代码,请在你的问题中更新你的代码是我的错,我没有停止计时器。如何将您的代码转换为覆盖?此时,它只是出现在页面顶部,然后当计时器停止运行,我的所有数据加载时。我希望它能覆盖整个页面。必须有一些jquery插件来覆盖。一个简单的谷歌搜索会给你很多选择:)谢谢,这是我的备份解决方案!
    <div id="loadingIndicator" runat="server" style="background-image:url(ajax-loader-small.gif);background-repeat: no-repeat; width: 100%; height: 104px; background-position: center;">
    </div>