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

Asp.net mvc 在ASP.NET MVC中显示临时处理页面而不添加历史记录的最佳方法?,asp.net-mvc,asp.net-mvc-4,Asp.net Mvc,Asp.net Mvc 4,我们试图在MVC中实现以下目标: 客户点击常规操作/查看页面并填写表单。他们单击submit按钮将值发布回控制器,控制器将启动一个长期运行的后台进程 客户被重定向到临时“处理-请稍候”页面。页面使用AJAX定期轮询状态更新 处理完成后,将客户重定向到结果页面 关键要求:如果客户在第3步点击浏览器中的后退按钮,他们应返回到第1步。我们不希望客户转到步骤2,也不希望步骤2出现在浏览器历史记录中 如果没有可怕的“重新提交发布的值”信息,我们如何实现上述目标 请注意,我不想在这里讨论投票的利弊。我知道这

我们试图在MVC中实现以下目标:

  • 客户点击常规操作/查看页面并填写表单。他们单击submit按钮将值发布回控制器,控制器将启动一个长期运行的后台进程

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

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

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

    如果没有可怕的“重新提交发布的值”信息,我们如何实现上述目标


    请注意,我不想在这里讨论投票的利弊。我知道这不是世界上最好的解决方案,我们可以使用Signal R进行重构。故事对我来说很重要。

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

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

    可能在转到结果页面时,您可以使用
    window.location.replace(url)

    基本上,它将替换当前的历史项目,因此他们无法返回到它


    有关更多信息,请参阅此讨论:

    也许在转到结果页面时,您可以使用
    window.location.replace(url)

    基本上,它将替换当前的历史项目,因此他们无法返回到它


    有关更多信息,请参阅此讨论:

    谢谢。这是我们可能会使用的选项,而不是我们需要以稍微不同的方式处理表单验证。谢谢。这是我们可能会使用的选项,除了我们需要以稍微不同的方式处理表单验证这一事实。感谢您的回答,我发现这非常有用。感觉有点“脏”,但像那样摆弄浏览器历史记录。遗憾的是,我不能用HTTP/HTML自然地实现它。谢谢你的回答,我觉得这很有帮助。感觉有点“脏”,但像那样摆弄浏览器历史记录。遗憾的是,我不能用HTTP/HTML自然地实现它。