C# - ASP MVC - .NET 4.5 - Bootstrap - Razor
我有一个用于设置复杂对象 (obj1) 的表单向导 ( http://vadimg.com/twitter-bootstrap-wizard-example/examples/basic.html)。 obj1 的属性是 List<obj2>
.在向导的一个步骤中,我想将多个 obj2 添加到列表中。由于 obj2 也有点复杂,我想我会使用另一个向导来帮助构建它。除了我需要坚持这个 List<obj2>
在向导 1 上,而我在向导 2 中构建另一个 obj2。
我的第一个想法是使用 session 来保存 List<obj2>
,我只是想知道这是否是一个好的选择,或者是否会有更好的选择?用户可能会多次离开 Wizard1 前往 Wizard2 并多次返回。
最佳答案
这里没有完美的答案;每种方法都有权衡取舍。但这里有一些我能想到的选项(这些选项独立于 ASP.NET/C#)
- session (按照您的建议)
- 这会将数据存储在网络服务器内存中(默认情况下)。如果您有很多用户,这可能是个问题。
- 当用户获得新的 cookie/ session 超时时,您将面临信息丢失的风险。
- 可能比数据库有更好的性能,再次取决于用户数量
- 数据库(如您所述)
- 可能会导致更多的数据库流量。
- 即使用户关闭浏览器、切换计算机、断电等,也可以为用户保存信息。
- 也许值得尝试一个单独的 NoSQL 数据库来存储临时向导数据。
- Cookie(将数据存储在用户的计算机上)
- 用户可能会篡改/查看数据
- cookie 大小有限制(每个 4 KB?)
- 本地存储 (HTML5)
- 类似于 cookie
- 但不是这么小的限制
- 并非每个浏览器都支持它(可能需要 polyfill)
- 表单/帖子/隐藏/ViewState
- 您可以只发布数据并将信息从一个响应拖到另一个响应
- 但这对后退按钮和超时来说真的很烦人
- 需要大量工作,而且用户可以篡改信息
关于c# - 在页面之间保留对象列表 - ASP MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18970205/