当客户收到UpdatePanel
的回复并在页面上呈现时,究竟会发生什么?
这个问题的动机是为this question和this jQueryUI ticket中提出的问题找到合适的解决方案。基本上,当jQueryUI日期选择器附加到TextBox
中的UpdatePanel
时会发生奇怪的事情,并且当UpdatePanel
更新时会打开。
This question和its linked article表明它只不过是:
document.getElementById('updatePanelContainer').innerHTML = responseHtml;
但是我已经在this jsfiddle尝试过了,而且除了Done按钮之外,datepicker完全停止了工作;我在部分回发中看到的行为是,datepicker仍然有效,但是它的状态是从它下面取出来的。当我使用jQueryUI非缩小代码调试它时,我发现drawYear
和drawMonth
属性会丢失它们的值(变为0)。
在玩Firebug并观看部分回发时,我注意到页面中有以下更改:
span
元素被添加到页面底部,其中包含隐藏字段,其中包含ASP.NET信息(类似于__VIEWSTATE)update
元素的内容以小的方式变化(空格与标签,可能)更新:我设法让repro工作;它们的关键是在重新创建它所绑定的输入后重新初始化datepicker。请参阅上面提到的jsfiddle的latest revision。不过,我仍然想知道,如果部分回发有什么特别的话。
答案 0 :(得分:2)
部分回发只是在UpdatePanel中为div发回适当的HTML,并且该html被替换为响应。完整的回发生命周期仍然发生在服务器上,因此在更新UpdatePanel外部的控件时必须小心,因为这些更改不会反映在客户端上,但可能会产生意想不到的副作用。