操作DOM时的ASP.NET ViewStatevalidation

我是,使用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或LinkBut​​ton这样的控件。 此时我收到ViewStatevalidation错误:

无法加载viewstate。 加载viewstate的控制树必须与在上一个请求期间用于保存viewstate的控制树相匹配。 例如,在动态添加控件时,在回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。

有没有办法解决? 我半看到它为什么会发生 – jQuery正在改变文档的结构,但我不完全确定这是如何/为什么这会影响ViewState。

您是否说您对该页面所做的唯一更改是在您的问题中添加代码? 当对话框出现时,您是否正在调用服务器?

在客户端上操作DOM不应该影响服务器正确恢复ViewState的能力(前提是您没有删除或损坏所需的元素,例如表单标记和保存编码的ViewState的隐藏字段)。

您是否查看了失败的原始HTTP请求,可能还有像Fiddler这样的Web代理?