我正在向控制器发送一个数据对象,每次调用控制器时都必须将每个对象存储在一个对象列表中,直到所有对象都被收集并准备好进行处理。
我对术语不是很了解,但我认为这称为缓冲。
我有这个:
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");
}
}
因此,每次将数据发布到控制器_objectList始终为null。只要应用程序正在运行,我怎样才能保存所有进入Index的数据。
答案 0 :(得分:0)
为每个请求创建和回收控制器,这就是_objectList
始终为空的原因。
如果要保存所有进入Index的数据,只要应用程序正在运行,您就可以使用通过Application
对象上的HttpContext
属性访问的ASP.NET应用程序状态。此对象将在所有会话中可用。如果您希望每个会话单独_objectList
,则可以使用通过Session
对象上的HttpContext
属性访问的会话状态。
答案 1 :(得分:0)
我会使用依赖注入来初始化MyController。这使控制器有责任处理传入的数据,但不必担心数据的存储方式。有点像这样......
public class MyController
{
private IStoreInts storage;
public MyController(IStoreInts storage){this.storage = storage;}
[HttpPost]
public void Index(int value){
storage.Add(value);
}
}