5

ページは多数のタスクを実行し、処理に長い時間がかかります。各タスクが完了するたびに、ユーザーにフィードバックを提供したいと考えています。

使用した ASP.NET Web フォームでResponse.Flush()

ASP.NET MVC でこれにどのようにアプローチしますか?

4

5 に答える 5

5

ネットワークに送信するステータスにかかわらず、Response.Write() と Response.Flush() を引き続き使用できます。または、ユーザーコントロールに進行状況がある場合は、次のようにすることができます。

this.PartialView("Progress").ExecuteResult(this.ControllerContext);
this.Response.Flush();

コントローラーのアクション メソッドで長い操作を実行しているときに、コントローラーから。

ここのコメントに記載されているように、これまたはクライアント側のアプローチを選択するのはあなた次第ですが、サーバー側はまだ可能であることを指摘したかっただけです.

于 2008-10-20T09:36:25.490 に答える
2

進行状況を表示するには、AJAXを使用することをお勧めします。アイデアのリンクを参照してください。

于 2008-10-20T09:29:07.613 に答える
2

2 つの基本的な方法があります。

  1. ステータスを返すサーバー ページをポーリングし、操作が完了すると結果ページにリダイレクトします。MVC はこの方法とは関係ありません。サーバー変数を使用してオブジェクト/ステータスを保存する必要があります。これは、(おそらく) セッション変数などを使用しているため、標準の Asp.NET アプリケーションに関連する方法です。とりあえず。

  2. クライアントからサーバー上の Web サービスへの AJAX 呼び出し。Asp.NET MVC は jQuery フレームワークを導入する予定なので、それをクライアント呼び出しと応答のイベント処理に使用します。これは、セッション状態などを使用しない/使用すべきではないMVCの精神に近いものです.

于 2008-10-20T09:38:32.913 に答える
1

クライアント側で作成できます。各ステップで、現在のステップでいくつかのセッション変数を設定します。次に、コントローラーで「GetProgress」という別のアクションを実行し、ビューとURIを割り当てます。

アクションでは、このセッションを確認し、タスクの現在の進行状況を返します。クライアント側でタイマー(つまりsetTimeOut)を作成し、特定の時間(1秒程度)ごとに後のコントローラーアクションのURIを呼び出します。それだ。

于 2008-10-20T09:21:56.783 に答える
1

私個人的には、2つのオプトインを検討します。

  • 待機ページにリダイレクトしてから、アクションを実行します
  • ajaxスタイルでやってください
于 2008-10-20T09:22:40.153 に答える