3

C# - ASP MVC - .NET 4.5 - 引导 - 剃刀

我有一个表单向导(http://vadimg.com/twitter-bootstrap-wizard-example/examples/basic.html),用于设置复杂对象(obj1)。obj1 的属性是 a List<obj2>。在向导的一个步骤中,我想将多个obj2添加到列表中。由于obj2也有点复杂,我想我会使用另一个向导来帮助构建它。除了我需要在向导 1 上坚持这个List<obj2>,而我在向导 2 中构建另一个obj2

我的第一个想法是使用会话来举行List<obj2>,我只是想知道这是否是一个好的选择,或者是否会有更好的选择?用户可能会从 Wizard1 离开去 Wizard2 并多次返回。

4

1 回答 1

2

这里没有完美的答案;每种方法都有取舍。但这里有一些我能想到的选项(这些选项独立于 ASP.NET/C#)

  • 会话(如您所建议)
    • 这会将数据存储在 Web 服务器内存中(默认情况下)。如果您有很多用户,这可能是个问题。
    • 当用户获取新的 cookie/会话超时时,您可能会丢失信息。
    • 可能比数据库更好的性能,再次取决于用户数量
  • 数据库(如您所述)
    • 可能会导致更多的数据库流量。
    • 即使用户关闭浏览器、切换计算机、断电等,也可以为用户保存信息。
    • 也许一个单独的 NoSQL 数据库只用于临时向导数据值得尝试。
  • Cookie(在用户计算机上存储数据)
    • 用户可能会篡改/查看数据
    • cookie 大小有限制(每个 4 KB?)
  • 本地存储 (HTML5)
    • 类似于 cookie
    • 但不是这么小的限制
    • 不是每个浏览器都支持它(可能需要 polyfill)
  • 表单/发布/隐藏/ViewState
    • 您可以只发布数据并将信息从响应拖到响应
    • 但这对于后退按钮和超时真的很烦人
    • 大量工作,用户可以再次篡改信息
于 2014-01-30T22:08:51.250 回答