[英]In ASP.NET MVC, how can I avoid or alert people from editing the same form or trying to edit stale data?
我有一个 ASP.NET MVC 站点,还有一个 web 页面,您可以在其中看到订单列表。
您可以双击一行,这将打开一个详细信息页面(授权用户将看到一个带有大量文本框、文本区域、单选按钮等的大表单)。
最初只有一个有权编辑订单的人,所以没有问题,但现在用户正在组建团队,在某些情况下有几个人(10+)有权编辑同一个订单,所以他们可能有详细信息 web同时向上翻页。
现在存在两个问题。
人们现在抱怨他们所做的更改立即被覆盖,因为其他人在同一时间编辑相同的订单,这造成了很多混乱。
如果人们整天都离开详细信息页面,他们可能会有一个非常旧的视图版本(因为其他人可能一整天都保存了更改)。 没有任何通知他们他们的页面版本已过时,然后应该在编辑之前刷新页面。
我正在寻找有关处理上述两个问题的最佳方法的建议。
此外,如果有某些库或模式可以利用(相对于从头开始构建)。
关于并发,您有两种选择:
悲观并发(锁定)。
您需要实施一个锁定系统,在该系统中您对只读或更新/删除发出锁定
乐观并发
将LastUpdated
时间戳列添加到您的表中,并在更新/删除时在WHERE
(连同 ID)中使用它。 如果 0 行受到影响,那么您正在尝试更新/删除过时的数据。
在 ASP.NET MVC with Entity Framework中阅读有关如何处理此问题的信息。
您还可以实施一个系统来通知同一页面上的用户。 一种方法是使用SignalR并为每个页面创建一个组。 您可以实时广播更改的值,甚至加载新值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.