1

私はデータベースに1000件のレコードを生成しています。つまり、少し時間がかかります。現在、ユーザーはせっかちになる可能性があります。そのため、コントローラーで発生する生成プロセス中に進行状況バーを表示したいと思います。jqueryまたはflashでかなりクールなプログレスバーを見つけましたが、アクションにリクエストを送信した後、新しいビューページを作成するために最初に取得したデータ(私が知っている)は後であるため、それらの使用方法がわかりませんコントローラ アクションが終了します。

プログレスバーを表示するタイミングと、データを送信して「ロード」する方法はありますか?

前もって感謝します。

4

4 に答える 4

1

たぶん、ajaxリクエストとしてサーバー呼び出しを行う必要があります

于 2009-07-13T09:35:26.847 に答える
1

私はasp mvc(およびstckオーバーフロー)が初めてです。しかし、私のアプローチは、レコード生成プロセスを新しいスレッドで開始することです。プログレスバーで部分ビューをロードするビューにリダイレクトします。次に、そのビューのスクリプトでパーシャルを更新します。次のようなもの:

<div id="documents-partial">
  <% if (ViewData["IsDone"] == false) { %>
    <% Html.RenderPartial("ProgressBar", ViewData["Progress"]); %>
  <% }else{ %>
    <% Html.RenderPartial("Records", ViewData["Records"]); %>
  <% }
</div>

<script type="text/javascript">
  $(document).ready(function() {
    update();
  }
  function update(){
    $('div#id-of-where-you-want-to-load-partial-view').load('/Records/CheckForUpdate', {param1: <%= ViewData["Progress"].Id %>}, update /*on callback calls the update method again*/ );
</script>
于 2009-07-13T09:52:31.477 に答える
0

私が見た1つの方法は、buildserverteamcityのWebインターフェイスでした。

ビルドの進行状況が表示されます。プログレスバーは、最後のビルドの期間に設定されます。

それは完璧には機能しませんが、十分に役立ちます。実行された作業が常に同等である場合(ビルドの期間など)、この方法で試すことができます。

于 2009-07-13T21:21:24.430 に答える
0

ajax を使用してレコードを取得している場合は、これを使用できます。

// Progress Bar -----------------------------
$().ajaxSend(function(r, s) {
    $("#contentLoading").show();
});

$().ajaxStop(function(r, s) {
    $("#contentLoading").fadeOut("fast");
});
//-------------------------------------------


<img id="contentLoading" src="../../Content/images/ajax-loader.gif" style="display:none"  alt="Updating ..." />

このコードは、ajax リクエストの実行中にアニメーション GIF プログレス バーを表示および非表示にします。

于 2009-07-28T13:07:28.050 に答える