确定是否有人离开网页的好方法

时间:2012-05-07 21:58:22

标签: c# jquery asp.net .net sql-server-2005

我正在尝试为我们的客户可以编辑某些字段的工作编写应用程序代码。当他们单击编辑时,代码将锁定要编辑的数据。当他们点击保存时,数据将解锁。但是,当我们点击其他地方,转到另一个页面或网站,甚至关闭浏览器时,我无法确定是否可以解锁数据。

确定用户是否已退出编辑页面有什么好方法?

(我们正在使用C#.NET 3.5和JQuery以及SQL Server 2005 DB)。

3 个答案:

答案 0 :(得分:2)

如果你真的必须使用悲观锁定,你可以在Session_End中添加检查并解锁此用户在当前会话中设置的所有锁定。如果用户关闭浏览器窗口或进入另一个站点,请使用onUserExit jQuery插件结束会话,以下是示例:

https://stackoverflow.com/a/10481972/351383

答案 1 :(得分:2)

您可以使用html标记的“onunload”事件。此事件被提出 - 使用X按钮关闭页面时 - 重定向页面时(在您的情况下,用户点击编辑并转到不同的链接而不保存。)

希望这会有所帮助!!

答案 2 :(得分:0)

您的问题被理解为“在没有点击'保存'来解锁字段的情况下,确定用户是否放弃了编辑页面有什么好方法?”

  

但我无法决定是否可以在他们点击其他地方时解锁数据,转到其他网页或网站,甚至关闭浏览器。

有人从同一个应用程序查看另一个页面的所有场景可能意味着同一个会话中的另一个窗口 - 也许是为了检查某些内容。您不希望触发解锁,因为您的用户仍然可以打开一个窗口,可以在其中提交编辑。

用户离开页面的其他方案可以使用onUserExit。

但是,您从此列表中省略了“用户前往午餐离开网页”的情况。这就是为什么悲观锁定存在问题。

因此,将问题重新描述为“用户点击了编辑,但未能在合理的时间限制内进行修改并保存”。

基本上,你的锁应该在某个时候到期。

单击“编辑”后,保存锁定开始并启动计时器(5分钟?),这也在屏幕上可见。 (如果同步这些是一个问题,请使客户端计时器比服务器端计时器短)。您的用户必须进行更改,然后在此时间内单击“保存”。你也许可以添加一个Extend按钮来延长时间。

原则是你需要确定某人已经离开太长时间,而不是某人已离开它。您还向用户显示,单击“编辑”,您希望他们很快就能进行编辑。

您需要对系统进行编码以解锁锁定已过期的字段。

这样做的好处是,您的倒计时对于请求此类编辑锁的人来说看起来很“酷”。