Веб-форма asp.net в нескольких вкладках браузера - PullRequest
0 голосов
/ 13 октября 2019

У меня есть вид сетки и кнопка редактирования в виде сетки. При нажатии кнопки редактирования я открываю новую страницу aspx, в которой есть текстовые поля для ввода данных. Когда пользователь копирует URL-адрес вида сетки и открывает его на новой вкладке любого браузера, нажмите кнопку редактирования для двух разных записей. Если пользователь что-то меняет в первой вкладке и отправляет это. Изменяет информацию для записи на второй вкладке. Это происходит потому, что я передаю идентификатор пользователя в сеансе на страницу формы aspx, и сеанс обновляется, когда пользователь открывает вторую запись на новой вкладке.

Есть только два способа передачи данных на страницу aspx?

  1. с использованием сеанса
  2. с использованием строки запроса

Я не хочу использовать строку запроса. Пожалуйста, помогите спасибо.

1 Ответ

0 голосов
/ 13 октября 2019

Вы пишете приложение ASP.Net, так что в конце дня вы можете сделать только очень многое. Вы можете запросить некоторые вещи из браузера, но если он действительно это сделает, это полностью зависит от вас.

Вы можете сделать это маловероятным случайно, используя целевое свойство HTML Links . Это запрашивает браузер повторно использовать любые открытые вкладки для этой записи. Но это не помешает выделенному человеку по-прежнему открывать 2 копии.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...