2012-02-01 71 views
1

尽管我完全意识到禁用后退按钮并不是网站的理想特征,但它可能是目前最简单的解决方案。在工作中,我的工作截止日期已经提前,如果更容易想知道是否有一种简单的方法可以在应用程序进程中禁用历史缓存。我完全打算建立回去的能力,但我现在没有时间,并希望避免可能出现的一些问题。为MVC3中的应用程序禁用浏览器历史记录

所以,虽然我完全知道后退按钮是你的,但我怎样才能让你的后退按钮回到你开始应用程序之前,因此需要重新启动(或任何最好的情况在此糟糕的情况)。

我希望这是有道理的,我已经阅读了从使用页面代码后的其他帖子,但没有看到任何与C#和MVC3相关的帖子。所以请不要因为需要而激怒我......这是一个临时的乐队援助!

我的理想解决方案是,当他们点击后退按钮时,他们会在开始应用程序之前返回到页面。这将有希望保持他们以前的历史,但保持应用程序不中断,直到我可以建立措施来捕捉和处理这个问题。

+0

使用AJAX?将整个''转换到一个容器中,并使用JS注入点击事件,基本上劫持了预期的“前进”机制,并通过ajax调用重新路由它,该调用将自己填充“”标签。 (虽然可以说你最好能够完成工作,而不是想办法在通行证上坚持下去)。 – 2012-02-01 02:42:45

+0

但是我曾考虑过这个,因为你暗示重写使用ajax会有点反作用。如果我找不到解决方案,那么在我编写处理该问题所需的其他代码时,它只会有几天破坏的可能性。另一件我曾考虑过的事情是在表中添加一个字段,一切引用存储最后完成的步骤,然后检查页面加载和重定向,如果需要与js(我在类的包装上有一个noshow元素,所以他们不会看到任何东西,如果他们禁用js)。 – Jared 2012-02-01 02:49:37

+0

我会努力寻求解决方案,但要提前解决这个缺陷。根据情况,您可能会建议他们查看是否有其他事件触发了错误(我认为您的头脑中有一组导致问题的步骤,也许您的最终用户可以找到其他情况并允许您编写一个甚至更好的最终解决方案)。 – 2012-02-01 02:53:55

回答

1

浏览器历史记录的最终目的是使用AJAX。这允许你在服务器上发送/接收数据,而客户端没有“返回”选项。您可以使用Microsoft为其演示MVC应用程序之一采用的方法实现该功能,并允许每个视图都以“ajax”参数接收。找到后,它会返回页面的PartialView(再少一些标题),然后您可以使用它来填充常见的内容元素(例如页面上的<body> or`元素)。

然而,这可以说是更多的工作来实现,然后解决原来的问题。我可能会跟踪他们在哪个阶段(我提到了会话,无论您是否提到了使用数据库),然后根据该值在“正确”路径上允许或转发它们。这给你更多的灵活性,更容易实现(及时),并保持服务器级别的所有验证。 可能唯一真正的问题是某些浏览器会缓存结果,因此即使服务器已返回进程,您也可能无法在服务器上重新获取数据。如果是这样的话,你可以只做这个向导式的AJAX页面部分,并且不要触及网站的其他部分,这将有效地强制它们沿着正确的路径前进。

+0

就这样知道。我决定使用数据库而不是会话的原因是,我可以轻松容易地让他们“为以后保存”或类似的东西,并通过电子邮件向他们发送链接以恢复应用程序。此外,由于这是该公司的新功能,所使用的表除了测试数据之外没有任何数据,因此将其清除/更改/不管什么都没有什么大不了的。所以考虑到这一点,我选择了db路由会话。此外,我计划在应用程序的第一个屏幕上进行ajax调用,并验证SSN并在应用程序存在时恢复。 – Jared 2012-02-01 19:38:13

相关问题