Move backward through history skipping the same page with different query string
上面的类似我的问题,但我会更具体,因为我担心POSTs:
方案: 用户在产品列表页面上。 (的 Shorts.aspx ) 用户选择产品并导航至产品详细信息页面( Best-Cargo-Shorts.aspx ) 用户点击添加到购物车,它将表格的回发(POST)执行到同一页面。 ( Best-Cargo-Shorts.aspx ) - 现在再次显示详细信息页面,但顶部添加了购物车消息。
当前行为: 添加到购物车表格后的帖子;当用户点击“返回”按钮时,他们会导航回同一页面的“帖子前”版本。
欲望: 当用户点击“返回”按钮时,我希望它转到 Shorts.aspx ,而不是 Best-Cargo-Shorts.aspx ,有效地跳过“POST前” “页面,或更准确地说,不存储第二个发布的页面(Best-Cargo-Shorts.aspx)。
此外,我总是希望避免“页面内容过期”消息。我只是不想在历史上发布该页面的版本。通过这种方式,以下也可能是真的。
Shorts.aspx > Best-Cargo-Shorts.aspx > Best-Cargo-Shorts.aspx [POST]>的 Cart.aspx
如果按下购物车和按钮,我希望浏览器导航到 Best-Cargo-Shorts.aspx (不使用POST)。
C#可以实现吗?此外,是否有非JavaScript解决方案?
感谢。
答案 0 :(得分:0)
处理此问题的一种常见方法是Post-Redirect-Get pattern。
本质上,POST请求的目标始终以303 See Other(如果是HTTP 1.1)或302 Moved Temporarily(如果HTTP 1.0)状态代码将请求重定向为GET,并且通常从历史记录中删除过期的POST页面。潜在的缺点包括可能作为查询字符串附加到GET的表单参数,我不知道它将(或不会)与ASP.Net Forms,MVC或其他Web框架集成的程度如何。
答案 1 :(得分:0)
通常,您应该使用post-redirect-get模式,即在用户使用POST将项目添加到卡片后,将其重定向到带有302的Best-Cargo-Shorts.aspx。 现在问题,我将使用Ajax作为帖子。我不能想到使用服务器端代码实现所需行为的跨浏览器方式。