我正在计划用asp.net mvc 2构建一个多步骤的表单。因此,我的Web应用程序将有5个页面对应5个步骤。每个步骤都有两个提交按钮,上一个和下一个。将存储每个步骤的输入数据以供稍后查看。例如,我们已经输入了步骤1,2,3,4的数据,现在我们在步骤5中。当我点击“之前”2次时,步骤3应该显示我之前输入的数据。类似的,当我点击“下一步”时,输入的数据也应保留在步骤4中(因为我们现在处于第3步)每个步骤使用的模型可能会有很大不同。
我正在寻找一种解决方案来保存每个步骤的数据。我正在考虑会话和tempdata,它们都有我必须考虑使用的缺点
会话
我非常感谢你的建议!
非常感谢!
答案 0 :(得分:2)
我总是使用会话。我已经看到你担心没有使用cookies的人,但我认为这些日子不存在问题,因为我不认为有很多用户拒绝使用cookies。
我对会话的偏好是它易于存储和检索,并且易于设置。 当您向外扩展(更多服务器)时,您可以轻松设置应用程序以将会话状态存储在SQL Server数据库中,这样您就可以为将来做好准备。
当步骤之间没有存储敏感信息时,我有时会使用隐藏字段,因为用户可以编辑隐藏字段的值。
如果帖子之间有很多信息需要分享,而你不需要很多隐藏字段,你也可以为你的存储创建一个对象(就像你在会话中创建它时创建的那样)和序列化对象,base64对其进行编码并将其存储在ONe隐藏字段中。
答案 1 :(得分:1)
您是否反对将数据粘贴到数据库中?这样,当他们进入“Prev”时,您只需从数据库中提取该页面的数据。您可以将该页面保存为“临时”或您希望表明用户尚未正式保存的任何状态。然后,您不必担心会话或类似的事情。
答案 2 :(得分:0)
TempData是在幕后使用Session变量实现的,因此您对会话的关注可以扩展到使用TempData。
如果向导很长很复杂,我可能会坚持使用数据库,否则如果它非常小而且简单,您可以考虑在表单字段中存储所有步骤的所有数据,并在步骤之间发布所有数据。
答案 3 :(得分:0)
我同意JonoW,我会考虑将隐藏字段存储在步骤之间(对我有用)