Проверка ASP.NET ViewState при манипулировании DOM
Я использую 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 ответ
Вы говорите, что единственное изменение, которое вы внесли на страницу, это добавление кода в ваш вопрос? Вы делаете какие-либо звонки на сервер, когда появляется диалоговое окно?
Управление DOM на клиенте не должно влиять на способность сервера правильно восстанавливать ViewState (при условии, что вы не удалили или не повредили обязательные элементы, такие как тег формы и скрытые поля, которые содержат закодированный ViewState).
Вы смотрели на необработанный HTTP-запрос, который не выполняется, возможно, с веб-прокси, таким как Fiddler?