2016-08-13 8 views
-2

私は、コントローラ側に2000クライアントに電子メールを送信する1つの方法があるプロジェクトを送信します。だから、私は電子メールのカウントを取得し、進行状況バーを表示して更新するために、コントローラからの電子メールIDの総数を取得したい。これどうやってするの?両方の数が修正されていない場合は、両方のフォームが提出された後に決定されます。setプログレスバーコントローラメソッドに基づいて

フォーム送信後、複数のAjaxリクエストを送信することは可能ですか?ビューの

コントローラメソッド

long totalcount = 0;
long CCount = 0;

[HttpPost] 
public ActionResult SendMail(SendMailRequest sm) 
    { 
      DataTable dt = new DataTable(); 
      dt = GetAllEmailIds(); 
      totalCount = dt.rows.Count; 

      for (int i = 0; i < dt.Rows.Count; i++) 
      { 
       client.send(); 
       Count++; 
      } 
    } 



[HttpGet] 
     public string GetCount() 
     { 
      string message = ""; 
      message = "completed " + CCount + " out of " + totalcount + ""; 
      return message; 
     } 

フォーム提出

updatevalue(); 

     function updatevalue() { 
      $.ajax({ 
       url: '/Email/GetCount', 
       type: "GET",  
       success: function (data) { 
        $('#result').html(data); 
       } 
      }); 
      setTimeout(updatevalue(), 1000); 
     }; 
+0

いいえ私はSingalRについて知らない私はASP.NETの初心者です –

+0

このサンプルをチェック - http://www.asp.net/signalr/overview/getting-started/tutorial-getting-started-with-signalr -and-mvc – ramiramilu

答えて

0

その異なるschenario後:

あなたが使用すること

しかし、解決策は以下のとおりです。グローバルプライベート変数設定

private int _mailSent; 

はポストアクションメソッド内にこれを増やします。

その変数の値を非同期的に返す別のアクションを作成し、そのメソッドへの呼び出しを続け、プログレスバーを設定します。

+0

はい、しかし、変数を非同期に返すアクションを作成する方法と、そのメソッドを今すぐ呼び出す方法を繰り返します。私はリピートajax呼び出しでこれをやっていますが、動作していません。 –

+0

public ActionResult GetMailSent (){return Json(new {_mailSent});}ここにhttppostを入れてください。ビューのjqueryでリクエストメソッドを作成することができます – hemantsharma

+0

上記のコードを参照してください同じものを編集しました –

関連する問題