【问题标题】:ASP.NET MVC: How to pass data between incomplete forms (wizard)?ASP.NET MVC:如何在不完整的表单(向导)之间传递数据?
【发布时间】:2012-06-23 19:49:28
【问题描述】:

在我的 Asp.net MVC 项目中,我有一个场景,

  1. 用户有一个名为“Form A”的大表格要填写。
  2. 在填写一半Form A时,用户被重定向到Form B以填写信息。
  3. 完成表格 B 后,用户将被重定向回表格 A,此时表格 A 应由用户在进入表格 B 之前填写的信息预先填写。

当用户填写表格 B 时,如何以及在何处保存已填写一半的表格 A 信息,以及如何使用之前填写的信息重新填写表格 A?

【问题讨论】:

  • 从表单 A->B 重定向时,您需要将数据保存在数据库中。获取和 id 并重定向到具有该 id 的表单 B。

标签: asp.net-mvc model-view-controller wizard


【解决方案1】:

这有帮助吗Passing Data in an ASP.NET MVC Application

您可以将值存储在 ViewData 或 Session 中以在从 Page A to Page B 导航时传递值

对于大数据输入页面 - 正如评论中所建议的那样 - 最佳选择是 将数据存储到数据库中。因为这对用户来说会很烦人 无论如何都要重新填写数据。

【讨论】:

  • 如果用户不小心关闭了标签并丢失了会话,那么之前表单中的所有数据都将消失。我仍然会考虑在数据库中保留“大数据输入表单”,而不是使用会话或视图数据。
【解决方案2】:

一种方法是将您正在构建的save the incomplete object/form(您可以将表单 A、B、C 等...视为 向导 的一部分)到数据库,然后将id to the next step 的向导。这也意味着您需要使某些数据库字段为空,但它有很大的优势,您还可以将 id 保存在 cookie 中,并允许用户在稍后阶段返回向导。这种方法不需要任何 javascript 或会话状态。

有关 asp.net 向导的示例代码示例,请查看以下帖子:

1) Create a Wizard in ASP.NET MVC 3

2) Creating a simple form wizard in ASP.NET MVC 4

3)Creating Wizard in ASP.NET MVC Part 2

【讨论】:

  • 将中间步骤保存到数据库是最可靠的方法(允许使用返回并完成),但比简单的保存会话/临时数据方法更复杂。您必须进行 CBA(成本效益分析)。
猜你喜欢
  • 2014-11-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多