我使用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。
答案 0 :(得分:0)
您是否说您对该页面所做的唯一更改是在您的问题中添加代码?当对话框出现时,您是否正在调用服务器?
在客户端上操作DOM不应该影响服务器正确恢复ViewState的能力(前提是您没有删除或损坏所需的元素,例如表单标记和保存编码的ViewState的隐藏字段)。 p>
您是否查看了失败的原始HTTP请求,可能还有像Fiddler这样的Web代理?