MVC:Html.Serialize vs Session

时间:2014-11-25 08:32:09

标签: c# asp.net-mvc-5

我目前正在实施一个订单向导,它包含几个步骤,但每个产品都有所不同。

我必须在步骤之间保存状态,因此用户可以来回跳转并进行调整。

要做到这一点,经过一些浏览后,似乎有两种方法可以做到这一点:

  • 为每个步骤创建一个包含子模型的主ViewModel,然后使用Html.Serialize页面中的模型
  • 只需将整个对象存储在Session

我想知道为什么我会选择其中一种方法。第一个已经在2009年的MVC2中被引入,并且这也与关于Html.Serialize的所有帖子的日期一样久,所以我想知道它是否仍然是可接受的方式。特别是考虑到它远离ViewState,它在ASP.NET中远非安全。

会话似乎是之后最合乎逻辑的选择,但我不知道其缺点是什么。如果应用程序池决定回收,我的会话会丢失吗?会话是服务器端的吗?

谢谢!

小小的注意事项:此时不想用Javascript做这件事,我想保留这个服务器端。因此,我没有将其列为第三种选择。

1 个答案:

答案 0 :(得分:0)

如果用户在向导上打开了多个标签,则会话的生命周期有限,无法正常运行。

将数据保存在隐藏字段中更加清晰,因为它实际上是无状态的,除非它太大或者出于安全原因必须保留服务器端。

我建议您尝试使用隐藏字段,只有在出现问题时才切换到会话。