持久页面之间的对象列表 - ASP MVC

时间:2013-09-23 22:50:50

标签: c# asp.net asp.net-mvc session twitter-bootstrap-wizard

C# - ASP MVC - .NET 4.5 - Bootstrap - Razor

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

我的第一个想法是使用一个会话来保持List<obj2>,我只是想知道这是一个不错的选择,还是会有更好的选择?用户可以从Wizard1离开,转到Wizard2并多次返回。

1 个答案:

答案 0 :(得分:2)

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

  • 会话(如你所知)
    • 这会将数据存储在Web服务器内存中(默认情况下)。如果您有很多用户,这可能是个问题。
    • 当用户获得新的Cookie /会话超时时,您可能会丢失信息。
    • db的潜在性能可能会更好,具体取决于用户数量
  • 数据库(如您所述)
    • 可能会导致更多数据库流量。
    • 即使关闭浏览器,切换计算机,电源耗尽等,也可以为用户保存信息。
    • 可能只需要一个单独的NoSQL数据库用于瞬态向导数据。
  • Cookie(在用户计算机上存储数据)
    • 用户可能会篡改/查看数据
    • Cookie大小有限制(每个4 KB?)
  • 本地存储空间(HTML5)
    • 与cookies类似
    • 但不是这么小的限制
    • 并非每个浏览器都支持它(可能需要填充)
  • 表单/后/隐藏/视图状态
    • 您可以发布数据并将信息从响应拖到响应
    • 但这会让后面的按钮变得非常烦人。超时
    • 很多工作,用户可以再次篡改信息