【问题标题】:Retain page final state after back button has been clicked单击后退按钮后保留页面最终状态
【发布时间】:2017-06-25 23:38:09
【问题描述】:

我正在使用 asp mvc 并创建了一个显示网格的页面,用户可以在其中更新行。完成后,他们单击下一步 - 转到下一页。如果他们单击后退按钮,网格页面会显示最初加载的值,我需要它来显示最终值。

问题

  • 网格页面加载
  • 用户编辑网格页面
  • 用户点击下一个按钮(被带到下一页)
  • 用户点击浏览器的返回按钮
  • 网格页面加载原始值

我已经完成了一些搜索,但我一定是问错了问题,我只找到了使用 webforms 视图状态的东西。那么我需要搜索什么来解决这个问题?任何指导都会被应用。

【问题讨论】:

  • 一些简单的离开页面提醒用户他们已经进行了未保存的更改就足够了
  • 您需要首先确定用户正在通过后退按钮导航。如果您能够这样做,那么您需要使用与下一页相同的模型状态并绑定相同的状态。会话可能很有用。首先,您需要根据用户体验检查您是否真的需要这种行为?

标签: asp.net-mvc browser back-button


【解决方案1】:

您需要以某种方式保持网格的状态。这可以通过以下两种方式之一来完成:

  1. 在用户单击下一步时使用相关状态数据进行发布,在会话中设置该状态,最后在渲染网格时从会话中读取状态。

  2. 在 JavaScript 中使用 localStorage。基本上,每次用户更改网格时,您都会在 localStorage 中设置状态,然后在页面加载时,您会尝试从 localStorage 加载网格状态。

第一种方法得到更广泛的支持(主要是因为所有工作都在服务器端进行),但需要为您的操作和视图添加额外的逻辑。第二种方法更具可插入性:您只需放入一个持久/加载状态的脚本,无需更改任何其他内容。然而,localStorage 是 HTML5 的一部分,所以它只在现代浏览器中可用,这基本上意味着 IE8+ 或任何其他网络浏览器。这实际上非常好,支持方面,但如果您需要支持 IE7,这不是一个可行的选择。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2015-09-03
    相关资源
    最近更新 更多