【问题标题】:Passing data between asp.net pages在 asp.net 页面之间传递数据
【发布时间】:2011-02-08 01:23:49
【问题描述】:

我想知道在多个页面之间传递大量值的最佳方式是什么。我正在考虑使用 context.Items [] 或 Session [] 将值保存到数据库中。我不确定什么是最好的方法。我可能传递了大约 40 个变量。这将在结帐过程中进行,因此它们应该在用户生命周期中保持不变。用户在第一次输入后不会更改这些值。这些值将类似于帐单地址、名字和姓氏等

【问题讨论】:

  • 好吧,context.Items 不起作用,因为它在请求之间被丢弃了。
  • 我认为如果使用 Server.Transfer(),context.items 会被保留?值只是从一个页面传递到另一个页面,还是在用户的生命周期中持续存在?用户是否需要拦截和更改值?
  • 这将在结帐过程中进行,因此它们应该在用户生命周期中保持不变。用户在第一次输入后不会更改这些值。这些值将类似于帐单地址、名字和姓氏等。
  • “倍数”下是什么意思?这是按顺序排列的:page1 -> page2;或 page1 应该例如同时向 page2 和 page3 发布数据?
  • 多个意味着不止一个 :) 我的意思是他们从一个页面开始,然后被定向到另一个页面以完成交易

标签: asp.net parameter-passing


【解决方案1】:

会话可能是最有效的。但是,如果会话超时或因任何其他原因丢失,则所有条目都会丢失。因此,如果持久性更重要,您可能希望将其存储在数据库中。

【讨论】:

    【解决方案2】:

    也许Cross-Page Posting 选项?

    另一个选项可以是Server.Transfer 方法以及Context.ItemsForm 属性。

    在这种情况下,任何已发布的表单变量和查询字符串参数都可用于第二个/第三个/等。页面。

    但浏览器中的网址在你真正转移到另一个页面之前是不会改变的。

    需要注意的一点是,如果 第一页写了一些东西给 响应缓冲区,你不清除 它,然后是第二个的任何输出 页面将附加到的输出 首先。这往往是导致 一种奇怪的行为,似乎 page 正在返回两个不同的页面。 此外,由于转移发生在 服务器,你不能转移 请求到外部站点。

    更多信息可以在here找到。

    【讨论】:

    • 我刚刚编辑了这个问题。值必须通过多个页面传递
    【解决方案3】:

    通过 Session 变量传递值并不能很好地工作。您可能还会遇到用户点击后退按钮或单击刷新并且会话变量已被垃圾收集的机会。这是任何缓存项目的方式。解决此问题的一种方法是,当用户转到第二页时,您将所有变量放入由 Key:Value 对分隔的隐藏字段中。

    如果值可以放入公开,为什么不直接放入 URL 中?

    如果您不能这样做,那么将它们放入数据库并根据用户名为它们提供一个 Guid ID,这对我来说将是最后的选择,因为您必须在每个请求上都读取和写入数据库.

    【讨论】:

      【解决方案4】:

      答案完全取决于用户下次返回您的网站时的期望。他是否希望你记住他已经输入的联系信息?如果是这样,那么您将不得不在数据库、cookie 等中使用长期持久性。您的用户是否仅在此访问中输入其他人的信息(即客户服务应用程序),并且下次将输入不同的信息他们参观?如果是这样,那么您可能想要使用 Session 对象。

      【讨论】:

      • 是的,我就是这么想的。确实没有理由将信息保存到数据库中。这些变量用于 xml 请求,它们可以在下一个请求时更改其计费信息,所以我认为 session 是要走的路
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-04
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多