Asp.net mvc 表单向导期间持久化数据

Asp.net mvc 表单向导期间持久化数据,asp.net-mvc,database,forms,wizard,Asp.net Mvc,Database,Forms,Wizard,我目前有一个三步表单向导,它从用户那里获取大量信息。第一个页面包含多个文本字段,第二个页面包含一个网格,第三个页面包含多个文本字段。目前,我正在数据库中保存每个步骤之后以及每行添加到网格之后的数据。原因是用户不会因为系统故障或会话超时而丢失他们输入的数据。我想知道这是保存这些信息的理想方法,还是有更好的方法 非常感谢您的帮助。有几种保存数据的方法: 将发布的用户输入的数据重新发送回视图,然后使用 @Html.HiddenFor(model=>model.Whatever)以确保它返回 发邮件给

我目前有一个三步表单向导,它从用户那里获取大量信息。第一个页面包含多个文本字段,第二个页面包含一个网格,第三个页面包含多个文本字段。目前,我正在数据库中保存每个步骤之后以及每行添加到网格之后的数据。原因是用户不会因为系统故障或会话超时而丢失他们输入的数据。我想知道这是保存这些信息的理想方法,还是有更好的方法


非常感谢您的帮助。

有几种保存数据的方法:

  • 将发布的用户输入的数据重新发送回视图,然后使用
    @Html.HiddenFor(model=>model.Whatever)
    以确保它返回 发邮件给邮递员。这将继续将用户数据保留在viewmodel中,您只需在视图之间不断传递它
  • 在会话
    HttpContext.session[“UserFormData”]中保存用户数据
  • 或者,您可以将用户输入的数据保存到数据库中, 就像你现在做的那样。我个人更喜欢这样 解决会话超时的问题

第一步后将它们存储在隐藏的或本地存储(在浏览器中)@lassedsvik我当前将数据存储在一个隐藏字段中作为Json,我担心的是如果用户会话超时,或者如果他们不小心离开了wizard@Will如果会话终止,隐藏字段显然不会持续存在,但是如果这是一个问题,那么您需要查看替代方案。如果您有一个长的向导进程,它覆盖了许多包含许多字段的页面,那么它可能有助于用户体验将其持久化到数据库中。大多数网站不会持久化表单数据,但它完全取决于您想要实现什么。