ASP.NET MVC存储从View临时检索的数据

时间:2010-04-14 05:17:45

标签: asp.net-mvc

如何在内存中存储提交给控制器大约一个小时的数据列表,以便我可以调用另一个操作并提取此数据?

原因:我需要展示一个演示应用程序,没时间写出数据库逻辑。所以我想模拟一个包含对象列表的数据库。

例如。我将人员列表{FirstName,LastName}发送到控制器操作'Create'以暂时将其存储在列表中。

然后我稍后再调用另一个控制器动作'GetPeople'来检索此人员列表。

5 个答案:

答案 0 :(得分:0)

我能理解你的目标是什么吗?它是在两个控制器之间传递数据吗? 控制器的作用是从底层数据存储中获取数据,处理数据,并将数据传递给视图以供显示。

在您描述的场景中,您希望将数据提交给控制器一小时,然后另一个控制器想要获取此数据?为什么要将这些数据保存在内存中?是因为控制器使用相同的数据而你想避免两次往返数据存储。

答案 1 :(得分:0)

根据您的Web服务器进程的易变性以及数据的重要程度,您可以:

  • 暂时将其存储在数据库中(将是最安全的)
  • 将其存储在web cache

答案 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;
    }
}