我遇到了一个问题,可能是我的方法或 asp.net 网络表单技术的限制。该解决方案的主要驱动因素是一个简单的事实,即当用户长时间坐在单个页面上时,他们会被重定向到我们的 CAS 服务器并返回到页面本身,这会导致所有表单输入都被清除,就好像用户没有输入任何信息(即丢失 ViewState/control 状态)。话虽如此,我正在探索其他选择,例如:
- 使用 HTML localStorage 存储页面上所有值的 JSON 字符串,如果需要,可以将其解析为对象并稍后加载到表单中。
尽管此解决方案允许我将每个页面上的值存储在单独的键/值对中(localStorage[ID1] 中的页面实例 1、localStorage[ID2] 中的页面实例 2 等),但服务器端仍然存在限制验证用户正在保存哪个页面。现在我正在使用会话来维护用户正在查看的表单,即。用户仅与 1 个页面相关联。继续这个例子,会话信息将导致用户与 localStorage[ID1] 或 localStorage[ID2] 相关联,而不是两者——这正是我的问题。我需要从客户端通信要保存哪一页。我探索了以下选项,并提出了以下问题:
- 一个静态类,包含服务器端的静态对象集合,存储哪些用户打开了哪些页面-> 问题:传达实际保存的是哪个页面。
- 使用包含手头页面标识符的加密版本的 ID 动态呈现我的保存按钮。
- 将正在编辑的当前值存储在查询字符串中
- 一个 cookie 值,用于存储用户希望在回发时更改的 ID 值——> cookie 如何获得它的值——尤其是当一个 ID 是新的时(用户第一次填写表单)?
我可能过于复杂了,我知道有一种更简单的方法。