1

我正在使用 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 之类的控件。此时我收到 ViewState 验证错误:

无法加载视图状态。正在加载视图状态的控制树必须与在先前请求期间用于保存视图状态的控制树匹配。例如,当动态添加控件时,回发期间添加的控件必须与初始请求期间添加的控件的类型和位置相匹配。

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

4

1 回答 1

0

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

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

您是否查看过失败的原始 HTTP 请求,可能是使用诸如 Fiddler 之类的 Web 代理?

于 2011-12-02T12:13:41.100 回答