Почему моя страница ASP.net не отображается до полного завершения? - PullRequest
0 голосов
/ 08 июня 2011

Я использую .net 2.0.Это проект, который я взял на себя для другого разработчика.

У меня есть страница aspx, которая может отображаться долго при определенных условиях из-за загрузки элементов из базы данных.Я хочу показать анимацию загрузки или что-то, чтобы пользователь знал, что страница загружается, поэтому я попытался использовать метод JQuery .ready (), однако я могу видеть результаты только после полной загрузки страницы.,Я имею в виду, что когда я нажимаю на ссылку на мою страницу aspx, ничего не рисуется, пока вся работа не будет выполнена.Работа выполняется на стороне сервера в Page_Load.

Я ищу лучшие способы отображения страницы, даже если пользователь видит только анимацию.Прямо сейчас это выглядит так, как будто что-то не так, потому что может пройти некоторое время (в некоторых случаях более 15 секунд), прежде чем страница прорисовается.

Ответы [ 3 ]

2 голосов
/ 08 июня 2011

Вы можете использовать Асинхронные страницы для этого

http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

1 голос
/ 08 июня 2011

В процессе вы приходите к вызову базы данных до того, как метод JQuery передаст всю свою информацию на страницу.Я вижу два решения этой проблемы:

  1. Получение данных через AJAX после загрузки страницы
  2. Явное управление потоком HTTP-ответов и сброс после сброса JavaScript

Не видя код, я не могу предложить конкретный ответ на ваш вопрос.

1 голос
/ 08 июня 2011

Один из способов извлечь код загрузки страницы и поместить его в кнопку с прозрачным изображением.

Затем перенесите все разделы страницы, которые будут обновлены, на панель обновлений.

После загрузки страницы вы можете нажать скрытую кнопку с помощью jQuery, чтобы загрузить данные, и панель обновлений будет обрабатывать значок загрузки, если вы настроили шаблон прогресса.

жерех:

<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 для загрузки данных.

...