显示临时处理页面而不添加ASP.NET MVC中的历史记录的最佳方法?

时间:2013-06-07 15:18:36

标签: asp.net-mvc asp.net-mvc-4

我们正试图在MVC中实现以下故事:

  1. 客户点击常规操作/查看页面并填写表单。他们点击提交按钮将值发布回控制器,然后控制器开始长时间运行的后台进程。

  2. 客户被重定向到临时'处理 - 请稍候'页面。该页面使用AJAX定期轮询状态更新。

  3. 处理完成后,将客户重定向到结果页面。

  4. 关键要求:如果客户在步骤3点击浏览器中的后退按钮,他们应该返回到步骤1.我们不希望客户转到步骤2,我们不希望第2步出现在浏览器历史记录。

    如果没有可怕的“重新提交已发布的值?”,我们怎样才能实现上述目标?消息呢?

    请注意,我不是在寻找有关投票利弊的讨论。我知道这不是世界上最好的解决方案,我们可能会使用Signal R重构。故事对我来说很重要。

2 个答案:

答案 0 :(得分:2)

只需将AJAX机制应用于步骤1(带有表单的页面),然后使用AJAX将信息发送回服务器并定期轮询操作进度。您可以使用JavaScript动态隐藏/显示“临时处理页面”,而无需实际重新加载页面。

答案 1 :(得分:1)

也许在进入resullt页面时,您可以使用window.location.replace (url);

基本上它会替换当前的历史项目,因此无法回复它。

有关详细信息,请参阅此讨论:window.location.replace (url);