就个人而言,我喜欢在服务器上进行所有控件绑定(例如,填充/绑定下拉列表、填充文本框等)。当页面加载时,我将调用绑定页面上所有控件的 BindControls()。当用户更改 UpdatePanel 中的下拉选项时,我将在回发时访问服务器并再次调用 BindControls()。
问题是UpdatePanel 显然来回传递页面的整个视图状态,而不仅仅是UpdatePanel 中控件的视图状态。我不明白为什么会这样,但就速度而言,这是一个相当大的性能损失。
过去,我使用过 Telerik 的 RadAjaxManager,它允许您指定希望将哪些控件的视图状态传递给服务器。它非常完美,因为它不需要客户端代码,并且仍然允许您在服务器上整合所有绑定逻辑,同时保持较小的视图状态传输。
不要误会我的意思:我喜欢 AJAX、Json 和 javascript,但我不喜欢用它执行绑定操作。也就是说,我想找到一种方法来配置 UpdatePanel,以便它只传输特定控件的视图状态或找到一个替代控件,它仍然允许我在服务器上绑定我的控件,然后将更新的 HTML 传递到客户。