假设我在页面上有很多重控制。例如,我在页面上填充了三个gridview和一个gridview&按钮位于updatepanel内。从这个场景中我们可以理解页面上会有巨大的视图状态。所以我想知道,如果我点击updatepanel内的按钮,那么所有的viewstate将在部分回发期间提交给服务器。如果巨大的viewstate提交给服务器并返回到客户端那么部分回发的优势是什么,因为响应时间会更慢。所以请告诉我如何调整只需要提交给服务器的代码。详细讨论部分回发概念,因此我们可以采取正确行动以获得良好的表现。感谢。
答案 0 :(得分:2)
重要的是要记住,UpdatePanel的部分回发会在每个异步请求上调用整页生命周期。
请查看以下链接,了解更新面板的优缺点。
Why ASP.NET AJAX UpdatePanels are dangerous
答案 1 :(得分:2)
+1给极客!
如果您担心页面的性能,我还建议使用ListView而不是GridView:
http://www.4guysfromrolla.com/articles/122607-1.aspx
http://basgun.wordpress.com/2007/12/27/listview-control-in-aspnet-35-1/
http://basgun.wordpress.com/2007/12/28/listview-control-in-aspnet-35-2/
http://basgun.wordpress.com/2007/12/29/listview-control-in-aspnet-35-3/
http://basgun.wordpress.com/2007/12/30/listview-control-in-aspnet-35-4/
您还可以访问Matt Berseth的博客,了解ListView如何为不同类型的开发场景变得非常方便(和整洁):
答案 2 :(得分:2)
所以我想知道,如果我点击updatepanel内的按钮,那么所有的viewstate将在部分回发期间提交给服务器,或者不是
是的,它会的。整个页面的视图状态在部分页面回发时被(完整地)传输到服务器,并且新的视图状态在响应时从服务器返回(完整地)回到客户端。
我建议您使用Fiddler之类的工具来检查浏览器和服务器之间的HTTP流量,以便进行部分页面回发。本文概述了使用Fiddler - Troubleshooting Website Problems by Examining the HTTP Traffic。
简而言之,UpdatePanel是一种快速而又脏的方式来获取部分页面回发,而不必担心客户端脚本或在服务器上编写逻辑来专门处理部分页面回发。正如您所发现的那样,这种简单性是有代价的。 : - )
为了更好地控制在部分页面回发上发送到服务器和从服务器发送的内容,您需要编写客户端脚本并创建服务器端方法或服务来处理Ajax请求。这些文章提供了各种提供此类功能的技术: