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

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

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

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

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

1 Ответ

1 голос
/ 26 октября 2009

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

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

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