Проверка ASP.NET ViewState при манипулировании DOM - PullRequest
1 голос
/ 02 декабря 2011

Я использую jQuery и ASP.NET, чтобы показать диалог, содержащий кнопки.После некоторой чистки я заставил работать кнопки в диалоговом окне, добавив немного JavaScript, чтобы добавить диалоговое окно в форму.

var dlg = $('#ctl00_ctl00_PageContent_PageContent__pnlPopup').dialog({
                    autoOpen: false,
                    height: 180,
                    width: 500,
                    modal: true,
                    draggable: true
                });
         dlg.parent().appendTo($('form:first')); // without this, controls in the dialog are non-functional

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

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

Есть ли способ обойти это?Я наполовину понимаю, почему это происходит - jQuery меняет структуру документов, но я не совсем уверен, как / почему это влияет на ViewState.

1 Ответ

0 голосов
/ 02 декабря 2011

Вы говорите, что единственное изменение, которое вы внесли на страницу, это добавление кода в ваш вопрос? Вы делаете какие-либо звонки на сервер, когда появляется диалоговое окно?

Управление DOM на клиенте не должно влиять на способность сервера правильно восстанавливать ViewState (при условии, что вы не удалили или не повредили необходимые элементы, такие как тег формы и скрытые поля, в которых хранится закодированный ViewState).

Вы видели исходный HTTP-запрос, который не выполняется, возможно, с веб-прокси, таким как Fiddler?

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