1

UpdatePanel当客户端接收到 ' 的响应并将其呈现在页面上时,究竟会发生什么?

这个问题的动机是为这个问题这个 jQueryUI 票中提出的问题找到一个合适的解决方案。本质上,当 jQueryUI 日期选择器附加到 a 并在更新时打开时,会发生奇怪TextBox的事情UpdatePanelUpdatePanel

这个问题及其链接的文章表明它只不过是这样:

document.getElementById('updatePanelContainer').innerHTML = responseHtml;

但是我已经在这个 jsfiddle中尝试过,并且 datepicker 完全停止工作,除了 Done 按钮;我在部分回发中看到的行为是 datepicker 仍然有效,但它的状态是从它下面取出的。当我使用 jQueryUI 非缩小代码对其进行调试时,我看到drawYeardrawMonth属性丢失了它们的值(变为 0)。

在使用 Firebug 并观察部分回发时,我注意到页面中有以下变化:

  • Firebug 的 DOM 选项卡中的一些输入属性消失了,例如:
    • 访问密钥标签
    • 父元素
    • 客户身高
    • 客户左
    • 客户顶部
    • 客户端宽度
    • 形式
    • 下一个兄弟姐妹
    • 偏移高度
    • 左偏移
    • 偏移父
    • 偏移顶部
    • 偏移宽度
    • 父节点
    • 上一个元素兄弟
    • 以前的兄弟姐妹
    • 滚动高度
    • 滚动宽度
  • 一堆隐藏span元素被添加到页面底部,其中包含带有 ASP.NET 信息的隐藏字段(似乎类似于 __VIEWSTATE)
  • 元素的内容update以微小的方式变化(可能是空格与制表符)

更新:我设法让重现工作;他们的关键是在重新创建绑定的输入后重新初始化日期选择器。请参阅上面提到的 jsfiddle 的最新版本。不过,我仍然想知道部分回发是否有什么特别之处。

4

1 回答 1

2

部分回发只是为 UpdatePanel 中的 div 发回适当的 HTML,并且该 html 被替换为响应。完整的回发生命周期仍然发生在服务器上,因此在更新 UpdatePanel 之外的控件时必须小心,因为这些更改不会反映在客户端上,但可能会产生意想不到的副作用。

于 2012-07-10T16:31:23.647 回答