处理多个自动重定向的正确方法是什么?

时间:2010-12-14 16:41:48

标签: c# asp.net browser redirect

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

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

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

  

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

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

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

现在这个过程基本上是

  1. 用户选择项目
  2. 用户选择选项,如果有多个选项可用。否则,网站本身会执行第3步。
  3. POST将选项添加到购物车
  4. 重定向到Page.aspx?step=#
  5. 根据需要多次重复步骤2-4
  6. 我可以对代码或页面进行任何更改,以便FireFox不会认为我处于无限循环中吗?

2 个答案:

答案 0 :(得分:4)

如果#每次都不同,我会感到很惊讶你会遇到无休止的重定向错误,但无论如何,这似乎不是最好的架构。基本上,如果代码决定一个步骤可以自动完成,它会立即重定向到具有新步骤编号的同一页面吗?

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

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

答案 1 :(得分:1)

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

  1. 从查询字符串中读取步骤#到本地变量
  2. 从传入本地步骤变量的数据库加载数据
  3. 如果数据只包含一个选项,则:
    (3.1)存储选项
    (3.2)增加局部阶跃变量
    (3.3)转到2

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


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