【问题标题】:ASP.NET ViewState validation when manipulating DOM操作 DOM 时的 ASP.NET ViewState 验证
【发布时间】:2011-12-02 11:23:34
【问题描述】:

我正在使用 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。

【问题讨论】:

  • 您找到解决方案了吗?我也有类似的问题。

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


【解决方案1】:

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

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

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

【讨论】:

  • 我只是通过在表单内移动这些控件来更改页面的结构,以便按钮工作。我很乐意与 Fiddler 一起寻找,但我真的不知道该寻找什么。有什么指点吗?
  • 查看正在发出的 HTTP 请求。它们是否在正确的时间发布?它们是否在 POST 数据中包含 __VIEWSTATE 字段?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-11-24
  • 2010-11-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-10-07
  • 2022-09-30
相关资源
最近更新 更多