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

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

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

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

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

1 ответ

Решение

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

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

Другие вопросы по тегам