Javascript asp.net页面首次加载-在所有内容之前显示加载div

Javascript asp.net页面首次加载-在所有内容之前显示加载div,javascript,html,asp.net,Javascript,Html,Asp.net,我有一个asp页面。 在第一次加载页面时,函数页面的加载需要很长的时间才能完成(15秒),我不能缩短它 我想做到这一点: 页面显示的第一件事是一个带有单词loading的div。然后在页面加载完成后,我想让它消失 如何实现这种行为 您可以有一个加载消息面板和一个内容面板。 这将允许页面首先呈现加载消息,然后为长请求调用请求 void Page_Load(){ var fromMsg = Request["loading"] == "1"; if (!fromMsg) {

我有一个asp页面。 在第一次加载页面时,函数页面的加载需要很长的时间才能完成(15秒),我不能缩短它

我想做到这一点:

页面显示的第一件事是一个带有单词loading的div。然后在页面加载完成后,我想让它消失


如何实现这种行为

您可以有一个加载消息面板和一个内容面板。 这将允许页面首先呈现加载消息,然后为长请求调用请求

void Page_Load(){
    var fromMsg = Request["loading"] == "1";
    if (!fromMsg) {
       LoadingPanel.Visible = true;
       ContentPanel.Visible = false
    } else {
       // Load Heavy Content Here
    }
}
然后在加载面板中添加一些javascript来调用重载

<asp:Panel id="LoadingPanel" runat="server" Visible="false">
    <h2>Loading...</h2>
    <script type='javascript'>
    window.setTimeout(function(){
       location.href = location.href += "&loading=1";
    }, 400);
    </script>
</asp:Panel>
<asp:Panel id="ContentPanel" runat="server">
   ...
</asp:Panel>

加载。。。
setTimeout(函数(){
location.href=location.href+=“&loading=1”;
}, 400);
...
如果加载消息很简单,那么您可以在CodeBehind中通过以下简单的方式完成同样的事情

void OnInit() 
{
    var fromMsg = Request["loading"] == "1";
    if (!fromMsg) {
       Response.Clear();
       Response.Write("<h2>Loading....</h2>");
       Response.Write("<script type='text/javascript'>window.setTimeout(function(){ location.href = 'ThisPage.aspx?loading=1'; }, 400);
       Response.End();
    }
}
void OnInit()
{
var fromMsg=请求[“加载”]=“1”;
如果(!fromsg){
Response.Clear();
响应。写入(“加载…”);
Response.Write(“window.setTimeout(function(){location.href='ThisPage.aspx?load=1';},400);
Response.End();
}
}

如果您需要在很多页面上执行此操作,您可以创建一个帮助程序库来生成消息HTML,并使用ScriptManager设置刷新JS

Hi,非常感谢!!这听起来似乎可以解决问题,但这是一种好的做法吗?这听起来有点不正确,不是吗?这是您可以获得早期“加载消息”的唯一方法“对于浏览器来说,要么写一个最小数量的响应。Flush(),要么呈现一个小的加载页面并重定向到重页面。使用WebForms,您可能会收到响应的副作用。Flush,但您肯定可以使用它,看看会发生什么。我在这里仅使用javascript代码进行了解释: