2008-12-05 4 views
5

У меня есть страница aspx, которая динамически загружает некоторые элементы управления при обратной передаче (т. Е. Когда происходит событие щелчка) и добавляет их в местозаполнитель. В зависимости от того, что нужно щелкнуть, необходимо загрузить другой набор элементов управления.
Это работает отлично в первый раз, но когда я очищаю элементы управления заполнителя и пытаюсь динамически загружать другой набор элементов управления, я получаю следующую ошибку: «Не удалось загрузить viewstate. Дерево управления, в которое загружается viewstate, должно совпадать дерево управления, которое использовалось для сохранения viewstate во время предыдущего запроса. "Не удалось загрузить viewstate при динамической загрузке различных элементов управления

Это происходит, даже если я ViewState.Clear().

Есть ли способ сделать это?

ответ

-1

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

Я думаю, что здесь происходит то, что вы называете свои элементы управления такими как: Control1, Control2, Control3.

И, возможно, когда вы нажмете, чтобы создать другой набор элементов управления, вы можете присвоить одно и то же имя другому типу объектов, скажем, Control1 был сначала создан как текстовое поле, и когда вы нажмете на его флажок.

Не видя кода, сложно сказать, почему ViewState.Clear() не работает, но если вы пытаетесь очистить представление, вам не нужна обратная передача, вы можете попробовать запросить новую страницу и передать аргументы на запросе вместо обратной передачи. Это будет быстрее, так как вам не нужно отправлять информацию ViewState обратно на сервер.