Ошибка ViewState: одновременные пользователи, изменяющие динамические элементы управления

StackOverflow https://stackoverflow.com/questions/1626389

Вопрос

Иметь страницу, которая добавляет элементы управления динамически. Состояние элемента управления извлекается из базы данных, а элементы управления повторно добавляются на страницу при обратной передаче. Пользователь может добавлять / удалять элементы управления через пользовательский интерфейс. Когда два пользователя находятся на одной странице и один добавляет / удаляет элементы управления, другой пользователь получит ошибку ViewState при следующей попытке изменить состояние элемента управления.

" Не удалось загрузить состояние просмотра. Дерево управления, в которое загружается состояние просмотра, должно соответствовать дереву управления, которое использовалось для сохранения состояния просмотра во время предыдущего запроса. Например, при динамическом добавлении элементов управления элементы управления, добавленные во время обратной передачи, должны соответствовать типу и расположению элементов управления, добавленных во время первоначального запроса. & Quot;

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

Я понимаю ошибку и почему она происходит, но мне кажется, что я что-то здесь упускаю. Есть ли способ иметь страницу, которая динамически добавляет элементы управления и может обрабатывать одновременных пользователей, которые изменяют состояние элементов управления?

Это было полезно?

Решение

Необходимо отделить состояние текущего пользователя от состояния master или глобального состояния. При обратной передаче вместо построения дерева элементов управления на основе основного определения в базе данных загрузите кэшированное дерево элементов управления, специфичное для текущего пользователя. После того, как вы пройдете реконструкцию ViewState, начните процесс согласования - будь то автоматический или необходимо загрузить другой пользовательский интерфейс, чтобы пользователь мог участвовать, выходит за рамки вопроса.

Суть в том, что вам нужно сохранять " ветви " мастера для каждого пользователя и фиксируйте и читайте более контролируемым образом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top