Asp.net mvc 3 如何在MVC 3中跨ActionResults传递数据?

Asp.net mvc 3 如何在MVC 3中跨ActionResults传递数据?,asp.net-mvc-3,Asp.net Mvc 3,我有一系列最终用户必须填写的页面(复选框),当他们完成每个页面时,我尝试创建他们选择的复选框列表。在系列页面的末尾,我想向他们展示他们在确认页面中选择的所有内容。我注意到,在请求之间,我在每页上创建的列表中的信息对于最终确认页不可用。我尝试了几种不同的解决方案(私有全局),但都没有效果。如何在ActionResults之间传递数据,以完成在确认页面上显示所有选定数据?谢谢 其他人?网络是无状态的,这意味着如果你想保存东西以备日后使用,就必须将它们存储起来。对于任何web框架都是如此。您需要将每个

我有一系列最终用户必须填写的页面(复选框),当他们完成每个页面时,我尝试创建他们选择的复选框列表。在系列页面的末尾,我想向他们展示他们在确认页面中选择的所有内容。我注意到,在请求之间,我在每页上创建的列表中的信息对于最终确认页不可用。我尝试了几种不同的解决方案(私有全局),但都没有效果。如何在ActionResults之间传递数据,以完成在确认页面上显示所有选定数据?谢谢


其他人?

网络是无状态的,这意味着如果你想保存东西以备日后使用,就必须将它们存储起来。对于任何web框架都是如此。您需要将每个页面的结果存储在某个位置

用于生成向导的选项:

  • 将所有选定答案存储在会话中,并在每页之间不断构建。最终确认将从会话中获得结果
  • 将它们存储在数据库中
  • 将结果存储在cookie中
  • 将它们存储在HTML5本地存储中
  • 在带有隐藏字段的每页上执行这些操作。第2页将在隐藏字段中显示第1页的答案,等等

您需要在请求之间保存一个状态。您可以通过以下方式执行此操作:

  • 查询字符串参数
  • 会话状态
  • 隐藏字段
  • Db(如果您希望在每个请求后保留中间选择)
  • 本地存储
  • 饼干
  • 还有别的吗


    我猜,正如RyanW指出的,将它们存储在会话状态是通常的方法。但是,您可以在一个请求中获取所有步骤,在本地执行一些高级JS/存储中间结果,并在问卷完成后发表最后一篇文章。

    btw您可以使用MVCContrib的Html.Serialize以这种方式保留对象。从某种意义上说,这是一种使用跨页viewstate的方法,因此您可以轻松地将向导的视图模型序列化为隐藏字段。不过,对于用户可能篡改的任何隐藏字段,请务必小心。