我想知道什么是在MULTIPLE页面之间传递大量值的最佳方法。我在考虑使用context.Items []或Session []将值保存到数据库。我不确定什么是最好的方法。我可能传递了大约40个变量。这将是一个结账过程,因此它们应该在用户生命周期中持久化。用户在第一次输入后不会更改值。这些值将类似于结算地址,名字和姓氏等
答案 0 :(得分:4)
会话可能是效率最高的。但是,如果会话因任何其他原因而超时或丢失,则任何条目都将丢失。因此,如果持久性更重要,您可能希望将其存储在数据库中。
答案 1 :(得分:3)
也许Cross-Page Posting选项?
另一个选项可以是Server.Transfer
方法以及Context.Items
或Form
属性。
在这种情况下,任何发布的表单变量和查询字符串参数都可用于第二个/第三个/ etc。页面也是如此。
但是,在您真正转移到另一个页面之前,浏览器中的URL不会更改。
要注意的一件事是,如果 第一页写了一些东西 响应缓冲区,你不清楚 它,然后是第二个的任何输出 页面将被附加到输出 首先。这通常是导致的原因 似乎是一种奇怪的行为 页面返回两个不同的页面。 此外,由于转移发生 服务器,你不能转移 请求外部网站。
可以找到更多信息here。
答案 2 :(得分:1)
通过Session变量传递值不能很好地工作。您可能还有机会点击后退按钮或单击刷新并且会话变量已被垃圾回收。这是任何缓存项的方式。解决这个问题的一种方法是,当用户转到第二页时,您将获取所有变量并将它们放入隐藏字段,该字段由Key:Value对分隔。
如果值可以放到开放状态,为什么不将它们放入URL?
如果你不能做任何一个,那么把它们放入一个数据库并按照用户名给他们一个Guid ID,这对我来说是最后一个选择,因为你必须在每个请求上读取和写入数据库
答案 3 :(得分:1)
答案完全取决于用户下次返回您网站时的期望。他是否希望您记住他已输入的联系信息?如果是这样,那么您将不得不在数据库,cookie等中使用长期持久性。您的用户是否仅为此次访问输入了其他人的信息(即客户服务应用程序),并将在下次输入不同的信息他们参观?如果是这样,那么您可能想要使用Session对象。