2017-09-07 11 views
0

すべてのオブジェクトが収集され、処理の準備が整うまで、コントローラが呼び出されるたびに各オブジェクトをオブジェクトのリストに格納する必要があるコントローラにデータオブジェクトを送信します。 。リスト内の着信オブジェクトをグローバルにスレッドごとに収集する方法

私は専門用語ではあまりよくありませんが、これはバッファリングと呼ばれています。

私はこれ持っている:常にnullを開始_objectListコントローラに

public class MyController : Controller 
    { 
     private readonly List<int> _objectList; 
     public MyController() 
     { 
      if (_objectList == null) 
      { 
       _objectList = new List<int>(); 
      } 
     } 
     [HttpPost] 
     public void Index(int newObject) 
     { 
      _objectList.Add(newObject); 
      Console.Write($"object {newObject} added"); 
     } 
    } 

毎度のポストデータを。アプリケーションが実行されている間は、どのようにインデックスに格納されるすべてのデータを保存し続けることができますか。

答えて

0

コントローラは、リクエストごとに作成され、リサイクルされるため、_objectListは常にnullを開始します。

アプリケーションが実行されている間は、インデックスに格納されているすべてのデータを保存する場合は、HttpContextオブジェクトのApplicationプロパティでアクセスするASP.NETアプリケーション状態を使用できます。このオブジェクトはすべてのセッションで使用できます。セッションごとに個別の_objectListが必要な場合は、HttpContextオブジェクトのSessionプロパティでアクセスされるセッション状態を使用します。

+0

私はそれをアプリケーションに保存しました。それは完璧に働いた。 – NeoSketo

0

依存性注入を使用してMyControllerを初期化します。これにより、コントローラは受信データを処理する責任を持ちますが、データの格納方法は心配しません。これに沿ったもの..

public class MyController 
{ 
    private IStoreInts storage;  
    public MyController(IStoreInts storage){this.storage = storage;} 

    [HttpPost] 
    public void Index(int value){ 
     storage.Add(value); 
    } 
} 
関連する問題