ASP.NET UpdatePanel:是否有UpdatePanel替代方法不会发送大量viewstate或需要clientide绑定?

时间:2012-08-02 16:20:41

标签: asp.net ajax updatepanel viewstate

就个人而言,我喜欢在服务器上执行所有控件绑定(例如,填充/绑定下拉列表,填充文本框等)。当页面加载时,我将调用绑定页面上所有控件的BindControls()。当用户更改UpdatePanel中的下拉选项时,我将在回发中命中服务器并再次调用BindControls()。

问题是UpdatePanels显然是来回传递页面的整个视图状态,而不仅仅是UpdatePanel中控件的视图状态。我不明白为什么会这样,但就速度而言,这是一个相当大的性能影响。

过去,我使用过Telerik的RadAjaxManager,它允许您指定希望传递给服务器的控件的视图状态。它非常完美,因为它不需要客户端代码,并且仍允许您在服务器上整合所有绑定逻辑,同时保持视图状态传输较小。

不要误会我的意思:我喜欢AJAX,Json和javascript,但我不喜欢用它执行绑定操作。也就是说,我想找到一种方法来配置UpdatePanel,以便它只传输特定控件的视图状态,或者找到一个替代控件,它仍然允许我在服务器上绑定我的控件,然后将更新的HTML传递给客户端。

2 个答案:

答案 0 :(得分:0)

如果您需要掌控,我建议使用jquery + page方法或Web服务。我过去一直在使用UpdatePanels和各种类似的控件,但是由于这样的原因我放弃了它。使用jquery比学习updatepanels等技巧要容易得多,以实现所需的行为和性能。无论你对技术有多了解,每一层抽象都会增加开销。

答案 1 :(得分:0)

不幸的是,在处理ASP.net时,很难干净地控制ViewState如何与服务器进行ping操作。这么多的页面生命周期是围绕ViewState构建的,它对整个平台来说非常重要。

像沃尔特所说,最好的选择是使用jQuery和Web服务的组合来处理您网站上的AJAX功能。我可能会避免将功能实现为Page方法,因为我认为调用它们需要您每次都将页面放在整个生命周期中。我还建议使用Knockout.jsjQuery Templates来帮助您对客户端元素进行数据绑定。如果组合得当,这些技术可以帮助您创建更丰富的客户端功能,与使用传统的ASP.net AJAX控件相比,具有更高的性能和更低的维护开销。

采用这些更开放的标准的另一个好处是,它们更容易转换为其他网络平台。使用jQuery来处理你的AJAX意味着如果你需要为运行PHP或MVC的站点开发(如果你想要下车),那么你用来创建客户端功能的很多技术或多或少会相同重量级WebForms平台)

相关问题