为什么我的 ASP.net 页面在完全完成之前才显示?

发布于 2024-11-14 08:39:21 字数 322 浏览 2 评论 0原文

我正在使用.net 2.0。这是我为另一位开发人员接手的一个项目。

我有一个 aspx 页面,由于从数据库加载项目,在某些情况下可能需要很长时间才能显示。我想做的是显示加载动画或其他东西让用户知道页面正在加载,所以我尝试使用 JQuery .ready() 方法,但是,我只能在页面完全加载后才能看到结果。我的意思是,当我单击指向我的 aspx 页面的链接时,在所有工作完成之前不会绘制任何内容。该工作是在服务器端的 Page_Load 中完成的。

我正在寻找显示页面的最佳实践,即使用户看到的只是动画。现在看起来好像出了什么问题,因为在绘制页面之前可能需要一段时间(在某些情况下超过 15 秒)。

I'm using .net 2.0. This is a project that I have taken over for another developer.

I have a aspx page that can take a long time to display under certain condition due to loading items from the database. What I want to do is to show a loading animation or something to let the user know the page is loading, so I tried to use the JQuery .ready() method, however, I can only see the results after the page is fully loaded. What I mean is that when I click on a link to my aspx page, nothing is drawn until all of the work is done. The work is done on the server side in Page_Load.

I'm looking for best practices of having the page display, even if all the user sees is an animation. Right now it appears as if something is wrong because it can take a while (over 15 seconds in some cases) before the page draws.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无边思念无边月 2024-11-21 08:39:21

一种方法是将页面加载代码取出并将其放置在具有透明图像的图像按钮中。

然后将页面中将要更新的任何部分包装在更新面板中。

页面加载后,您可以使用 jQuery 单击隐藏按钮来加载数据,如果您设置了进度模板,更新面板将处理加载图标。

asp:

<asp:UpdatePanel runat=server id=upMain>
 <ContentTemplate>
   <asp:gridView runat=server id=gridView>
   <asp:ImageButton runat=server id=hiddenLoadButton>
 </ContentTemplate>
</asp:updatePanel>

在按钮中单击:

protected void hiddenbuttonclick(object sender, eventargs args)
{
  gridview.DataSource = yourDataSource;
  gridView.DataBind();
}

jQuery:

$(document).ready(function(){

    $("#hiddenLoadButton").click();

});

另一个选择是使用 ajax 方法来加载数据。

One way to take the page loading code out and place it in a image button with a transparent image.

Then wrap any sections of the page that will be updated in an update panel.

Once the page has loaded you can click the hidden button with jQuery to load the data, and the update panel will handle a loading icon if you have set up a progress template.

asp:

<asp:UpdatePanel runat=server id=upMain>
 <ContentTemplate>
   <asp:gridView runat=server id=gridView>
   <asp:ImageButton runat=server id=hiddenLoadButton>
 </ContentTemplate>
</asp:updatePanel>

in button click:

protected void hiddenbuttonclick(object sender, eventargs args)
{
  gridview.DataSource = yourDataSource;
  gridView.DataBind();
}

jQuery:

$(document).ready(function(){

    $("#hiddenLoadButton").click();

});

Another option would be to use an ajax method to load the data.

装纯掩盖桑 2024-11-21 08:39:21

在此流程中,您将在 JQuery 方法将其所有信息传递到页面之前进行数据库调用。我可以看到有两种解决方案:

  1. 页面加载后通过 AJAX 获取数据
  2. 显式控制 HTTP 响应流并在发送 JavaScript 后刷新

没有看到代码,我无法为您的问题提供具体答案。

In the flow, you are coming to the database call prior to the JQuery method passing all of its information to the page. There are two solutions to this, I can see:

  1. Get the data via AJAX after the page load
  2. Explicitly control the HTTP Response stream and flush after the JavaScript is sent

Without seeing the code, I cannot offer a specific answer to your issue.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文