在ASP.NET MVC中保留表单帖子和页面请求之间的“模型”

时间:2013-12-19 09:53:22

标签: c# asp.net-mvc memory-management

为了保留表单帖子和页面请求之间的模型信息,我将我使用的模型定义为“静态”,因此我不会丢失模型的信息。

让我们说,我有3个步骤。第一步,我让用户选择Excel文件。第二步,我创建一个DataSet并附加到我的模型。第三步,我验证用户输入并基于DataSet更新我的DbContext。所有这些步骤都需要一个表格。 (在操作结束时,我释放DataSet以释放资源,但无法确定用户是否取消了操作,因此DataSet对象将保留在内存中。)

所以我的问题是,以这种方式保持我的模型静态,对于服务器上的内存分配是否有效?或者你会建议一个更好的选择吗?

1 个答案:

答案 0 :(得分:2)

听起来不错。首先,如果多个用户同时使用此静态模型,那么您的模型对于每个用户都不会保持一致。通常情况下,您有3个地方:

  1. 将其作为隐藏字段写入表单,您可以再次发回 - 这对您的Excel文件无效,但对于保留模型的其他状态可能很有用。

  2. 写入会话状态。对于excel文件,您可能希望写入文件系统,然后将文件名存储在会话状态中。

  3. 写入数据库。您可以将excel文件放在db中,或将excel文件放入文件系统并在db中存储该文件的路径。一旦用户超过第3步,您可以设置一个标记,保留此数据,或将其移动到另一个表。而且你可以定期运行一个工作来清理用户没有进入第3步的数据。