操作DOM时的ASP.NET ViewState验证

时间:2011-12-02 11:23:34

标签: jquery asp.net viewstate jquery-dialog failed-to-load-viewstate

我使用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验证错误:

  

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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