Вы пишете приложение ASP.Net, так что в конце дня вы можете сделать только очень многое. Вы можете запросить некоторые вещи из браузера, но если он действительно это сделает, это полностью зависит от вас.
Вы можете сделать это маловероятным случайно, используя целевое свойство HTML Links . Это запрашивает браузер повторно использовать любые открытые вкладки для этой записи. Но это не помешает выделенному человеку по-прежнему открывать 2 копии.
Довольно простой способ избежать условий гонки в целом - это столбец SQL rowversion . Вы возвращаете Rowversion вместе с остальными. Вы держите это в скрытом поле формы (для этого они и существуют). При записи обновления проверьте, совпадает ли оно до записи. Если да, вы обновляете. Если нет, кто-то изменил запись с тех пор, и вы отклоните обновление. Может быть тем же пользователем в другой вкладке, может быть другим пользователем в конце света. Может быть, эта вкладка была открыта год назад, сохранившись в спящем режиме. Это не имеет значения - любое изменение отключает эту защиту.