代码之家  ›  专栏  ›  技术社区  ›  Henric

限制在不使用javascript的情况下使用后退按钮

  •  0
  • Henric  · 技术社区  · 16 年前

    我目前正在参与一个ASP.NET项目,在该项目中,我需要限制用户使用后退按钮返回页面结构的能力。它本质上是一个向导式的导航,我不想让用户从最后一步返回并重新提交数据。不幸的是,javascript不是一个选项,所以我通过将每个页面加载事件中的httpcacheability设置为nocache来“解决”它。当用户单击后退按钮时,这会给用户提供“页面过期”页面。它一点也不优雅,我想知道还有什么其他的选择可以达到我想要的效果。

    4 回复  |  直到 16 年前
        1
  •  2
  •   ctford    16 年前

    只公开整个向导的一个URL。显示的步骤将取决于会话状态,会话状态可以存储已完成的步骤。

    这样就没有“无效”的URL供用户加载。

    您可能应该考虑为每个步骤创建一个用户控件。然后将所有步骤放在一个.aspx页面上,并根据需要显示和隐藏它们。

        2
  •  2
  •   Rytmis    16 年前

    将导航状态保持在服务器端,如果用户点击的页面与下一个/上一个点击不符,则将其重定向到应该的位置。

        3
  •  2
  •   Matt    16 年前

    简短的回答是“你不能”。因为它是浏览器端的功能,任何实现这一点的方法都将通过浏览器公开的东西,这意味着它是微不足道的失败。长话短说就是你不想这样。这会造成可用性问题(不希望对正常浏览器行为进行任何更改)。我建议使用会话cookie来确定它们在进程中的位置,如果它们试图访问进程的错误页面(在处理任何get/post数据以及丢弃它们可能提交的任何数据之前),则向相应页面发出302重定向。试图通过改变浏览器基本功能的工作方式来击败用户,总是会导致头痛。

        4
  •  1
  •   Chris Marisic    16 年前

    这是不可能的。即使你让它在Firefox的Internet Explorer中工作,它也不会工作。

    处理这一问题的唯一方法是,您需要在用户会话、数据库等中保存用户步骤的状态,然后在用户提交时验证他们提交的步骤是否正确。