ASP.NET MVC:将会话状态保存在类似向导的应用程序中的最佳实践

Igo*_*ejc 5 viewstate asp.net-mvc session-state

假设我有一个Web应用程序实现像一组向导页面来编辑复杂对象.在用户单击"完成"按钮之前,对象不会保存到后端系统(需求),因此在此期间我必须在某种会话状态下保留有关对象的全部信息.

此外,某些向导页面必须显示具有可能大量项目的组合框和列表框.使用Web服务从后端系统获取这些项目.

巧合的是,该向导允许用户从一个向导页面自由跳转到任何其他页面(使用表单顶部的选项卡链接),因此它不是一个简单的"下一个,下一个...完成"的事情.

附加约束:Web应用程序在Web场上运行,客户厌倦了使用服务器端会话状态.在最好的情况下,他们希望将会话状态的大小保持最小(过去他们遇到了问题).

所以基本上这里有两个问题:

  1. 如何/在何处保存用户在向导中输入的数据?
  2. 是否缓存从后端收到的组合/列表项,如果是,在哪里?

我正在考虑的选项:

  1. 将对象存储在类似WebForms的ViewState中(通过将其序列化到HTML页面中).这还包括组合框项目.显然,HTML页面可能会变得非常大,因此Web应用程序会很慢.

  2. 将其存储到服务器端会话状态,无论客户的意愿如何,并且在实际Web场(项目后期)上进行测试之前,不知道性能将如何受到影响.

我不能在两者之间作出决定.或者还有另一种选择吗?

小智 5

为什么要缓存?您可以只使用选项卡页面,其中每个页面都是div或面板,只显示与选项卡相关的当前div.这样,当用户提交表单时,您无需跟踪和处理所有输入.