如何在内存中存储提交给控制器大约一个小时的数据列表,以便我可以调用另一个操作并提取此数据?
原因:我需要展示一个演示应用程序,没时间写出数据库逻辑。所以我想模拟一个包含对象列表的数据库。
例如。我将人员列表{FirstName,LastName}发送到控制器操作'Create'以暂时将其存储在列表中。
然后我稍后再调用另一个控制器动作'GetPeople'来检索此人员列表。
答案 0 :(得分:0)
我能理解你的目标是什么吗?它是在两个控制器之间传递数据吗? 控制器的作用是从底层数据存储中获取数据,处理数据,并将数据传递给视图以供显示。
在您描述的场景中,您希望将数据提交给控制器一小时,然后另一个控制器想要获取此数据?为什么要将这些数据保存在内存中?是因为控制器使用相同的数据而你想避免两次往返数据存储。
答案 1 :(得分:0)
根据您的Web服务器进程的易变性以及数据的重要程度,您可以:
答案 2 :(得分:0)
您可以使用会话
Session["list"] = MyList
答案 3 :(得分:0)
听起来你只是想模拟一些数据。为什么不创建一个可以代替数据库的模拟接口。这也可以使您的测试更容易。
您可以创建一个静态类,它返回您需要的所有数据,然后只需调用它。如果您希望能够添加,请在应用首次启动时运行的初始化功能将所有数据存储在Session
中,然后只需在Session
商店中添加和删除数据
答案 4 :(得分:0)
public static class PeopleRepository
{
private static List<Person> people;
static PeopleRepository()
{
people = new List<Person>();
// some test data
people.Add(new Person { FirstName = "Foo", LastName = "Bar" });
// ...
}
public static void AddPerson(Person p)
{
people.Add(p);
}
public static List<Person> GetPersons()
{
return people;
}
}