c# - 在页面之间保留对象列表 - ASP MVC

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

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/

相关文章:

c# - 更改 C# 编译目录(类库和 WPF;不是 ASP.NET)?

c# - IViewLocalizer 返回错误的语言

asp.net - 在 aspnetdb 表中添加列好吗?

asp.net - 如何将对当前网站中的服务器控件的引用添加到 web.config

asp.net-mvc - 如何从mvc Controller 获取ajax数据

javascript - Javascript MVC 的自动操作结果调用

c# - Asp.Net Identity 在种子方法中创建角色失败

asp.net - 将字典绑定(bind)到 GridView

c# - 与在 C# 中声明新变量相比,使用条件运算符为列表字段赋值是最好的方法吗?

c# - 在不知道进程启动顺序的情况下在另一个进程上触发事件