我计划使用 asp.net mvc 2 构建一个多步骤表单。因此,我的 Web 应用程序将有 5 个页面对应 5 个步骤。每个步骤都有两个提交按钮,上一个和下一个。每个步骤的输入数据将被存储以供以后查看。例如,我们已经输入了步骤 1、2、3、4 的数据,现在处于步骤 5。当我点击“上一步”两次时,步骤3应该显示我之前输入的数据。类似地,当我单击“下一步”时,输入的数据也应该在步骤 4 中保留(因为我们现在处于步骤 3),每个步骤使用的模型可能非常不同。
我正在寻找一种解决方案来保存每个步骤的数据。我正在考虑会话和临时数据,它们都有我必须考虑使用的缺点
-
Session
- 默认会话是 cookie 会话,因此如果 Web 浏览器没有启用 cookie,会话将无法正常工作。我这里还有一个问题,当 IE 没有启用 cookie 时,会话变量只有在 actor 使用的情况下才会丢失hostname访问网络应用程序。会话在带有 ip 地址 url 的 IE 中工作正常.
- Cookie less 会话:不安全,有很多限制,并且有发布问题(http://stackoverflow.com/questions/3972433/mvc2-cookieless-session-issue-using-post 或http://forums.asp.net/p/1517391/3634908.aspx http://forums.asp.net/p/1517391/3634908.aspx)
- Tempdata:tempdata 仅针对一个请求持续存在。
我真的很感谢你的建议!
非常感谢!
我总是使用会话。我看到您对不使用 cookie 的人感到担忧,但我认为现在这不是问题,因为我不认为有很多用户拒绝使用 cookie。
我对会话的偏好是它易于存储和检索并且易于设置。
当您横向扩展(扩展到更多服务器)时,您可以轻松设置应用程序以将会话状态存储在 SQL Server 数据库中,以便您也为未来做好准备。
当步骤之间没有存储敏感信息时,我有时会使用隐藏字段,因为用户可以编辑隐藏字段的值。
如果帖子之间有很多信息要共享,并且您不想要很多隐藏字段,您还可以为存储创建一个对象(就像您在会话中存储它时创建的那样)并序列化对象,base64 对其进行编码并将其存储在 ONe 隐藏字段中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)