【问题标题】:What is the proper way to handle several automatic redirects?处理多个自动重定向的正确方法是什么?
【发布时间】:2011-05-25 09:49:26
【问题描述】:

我有一个网站,基本上允许客户使用可配置的项目构建购物车。用户将选择一个项目,系统会提示他们选择他们想要的第一个选项,他们会被发送到第二个步骤,在那里他们会选择第二个选项,等等。

步骤的数量和选项的数量是可变的,因为它们是由客户定义的。通常该项目只有 2-3 个步骤和 5-10 个选项。但是,为了让客户更快,如果给定步骤只有一个选项可用,则会自动选择它,并将用户发送到下一步。

一位客户决定设置一个包含 10 多个步骤的项目,每个步骤只有一个选项。这导致整个过程自动选择所有内容。 FireFox 不喜欢这样,因为它给出了错误

Firefox 检测到服务器 正在重定向对此的请求 以永远不会的方式解决 完成。

(我没有检查过 IE 或 Chrome,虽然它可能会给出类似的错误)。

解决此问题的最佳方法是什么?

现在的流程基本上是

  1. 用户选择项目
  2. 如果有多个可用选项,则用户选择选项。否则网站会自行执行第 3 步。
  3. POST 将选项添加到购物车
  4. 重定向到Page.aspx?step=#
  5. 根据需要多次重复步骤 2-4

我可以对代码或页面进行任何更改,以使 FireFox 不会认为我处于无限循环中吗?

【问题讨论】:

    标签: c# asp.net browser redirect


    【解决方案1】:

    如果 # 每次都不同,您会收到无穷无尽的重定向错误,这让我感到惊讶,但无论哪种方式,这似乎都不是最好的架构。基本上,如果代码决定一个步骤可以自动完成,它会立即重定向到具有新步骤编号的同一页面?

    您为什么不让您的代码在不重定向的情况下执行此操作,根据需要增加服务器代码中的页码,并直接向他们展示正确的步骤,而无需重定向?

    无论您在每一步发布时发生了什么,我认为您都可以在代码中轻松完成,而无需实际发布新帖子。

    【讨论】:

      【解决方案2】:

      我猜这样的事情会起作用:

      1. 将查询字符串中的步骤#读入局部变量
      2. 从数据库中加载数据,传入本地 step 变量
      3. 如果数据仅包含一个选项,则:
        (3.1) 商店选项
        (3.2) 递增局部步进变量
        (3.3) 转到 2

      4. 使用第 2 步中的数据加载页面


      当某人在 Page.aspx?step=1 上时,您的代码如何处理跳过选项并在地址栏中输入 Page.aspx?step=10 的人?

      【讨论】:

      • 网站将检查以确保如果他们在第 10 步,则第 1 至 9 步已被标记为已完成。如果没有,它们将被送回第一个未完成的步骤。
      • 在这种情况下,如果服务器的副本仍然是主服务器,那么在 url 中包含页面 # 似乎只是让事情变得复杂。
      猜你喜欢
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多