2

http Web サービスから一度に多くの情報を収集する c# を使用して、asp.net で Web アプリを作成しています。このデータ収集プロセスには 10 ~ 20 秒かかるため、小さなローディング フレームと小さな回転イメージを表示したいと考えています。

1 つのページでこれを実現するために、 のプロパティをduringloadingdivに設定する div を呼び出しました。私の「映画を探す」ボタンが押されると、C#コードは元々ページにあったコンテンツを非表示にし、バックエンドでWebサービス情報をロードしている間にロードイメージを表示し、ロードイメージを非表示にしてデータを表示することになっています分割表示 VisiblefalsePageLoad

Web サービスからデータをロードするクラスをコメント アウトすると、問題なく動作します。しかし、Web サービス情報を追加するとすぐに、そのloadingdiv.Visible = true行は完全にスキップされ、10 ~ 20 秒の操作が行われます。

関連するコード行は次のとおりです。

 protected void btnFindMovies_Click(object sender, EventArgs e)
 {
    //Hides the main content that contained search options for movies
    thisarticle.Visible = false;
    articlediv.Visible = false;
    lblGenres.Visible = false;
    ratingdiv.Visible = false;
    List<int> gList = new List<int>(); //Genre List

    /* Other code that goes through checkboxes to find out which genres 
    to search for in the movie search */

    string title = "Movie Title Here"; 
    Page.Title = title;

    loadingdiv.Visible = true; //Shows loading div before completing search

    MovieSearch search = new MovieSearch(gList);  //Intensive web service use 
    (10-20 seconds)
    loadingdiv.Visible = false; //removes the loading div from the screen
}

loadingdivWeb サービスの操作中に を表示するにはどうすればよいですか?

4

1 に答える 1

3

そのメソッドのすべては、応答がユーザーに提供される前に発生します。これは、次のことが起こることを意味します。

  • ユーザーがボタンをクリックします。
  • リクエストがサーバーに送信され、ポストバックが発生します。
  • ポストバック中にbtnFindMovies_Click解雇されます。を設定Visible = trueし、Web サービスが情報を返すのを待ってから設定しVisible = falseます。
  • 応答はブラウザーに提供されます。

これはすべて同じリクエストで行われるため、すべてが完了するまでブラウザには何も返されず、loadingdiv.Visible = true;行が完全に削除されます。

一部のサーバー側コードが Web サービスにリクエストを発行している間に読み込み中の div を表示したい場合は、AJAX を使用してこれらの呼び出しを非同期で行い、Javascript を使用して読み込み中の div を表示/非表示にする必要があります。

以下は、AJAX の便利な入門ガイドのようです。

http://www.simple-talk.com/dotnet/asp.net/ajax-basics-with-jquery-in-asp.net/

于 2013-01-28T00:13:13.510 に答える