首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >减少“asyncPostBackControlIDs”列表

减少“asyncPostBackControlIDs”列表
EN

Stack Overflow用户
提问于 2013-01-07 17:23:03
回答 1查看 223关注 0票数 0

我有一个包含大量控件的页面,这些控件可以触发对服务器的回发。我知道在一个页面上拥有大量控件并不被认为是一种好的做法,但我的ASP.NET web应用程序的性质需要这样做。看到我在这个页面上有大量的控件,我大量使用了UpdatePanels。我将ViewState存储在会话中,以减少页面的响应大小,效果非常好。

然而,在使用Fiddler时,我注意到ajax响应的'__VIEWSTATE‘部分后面的’asyncPostBackControlID‘包含了一个列表,其中列出了可以触发回发的每个UpdatePanel的每个控件。这个列表很长!这个列表似乎每个页面没有太多变化,因此每次在UpdatePanel中发生回发时都下载整个列表是没有意义的……

有没有办法像ViewState一样在服务器上存储‘asyncPostBackControlID’,或者以其他方式减小‘asyncPostBackControlID’列表的大小?

EN

Stack Overflow用户

回答已采纳

发布于 2013-01-07 17:50:35

此外,我非常怀疑是否存在这种可能性,因为客户端最有可能需要这些控件ids来决定是执行常规回发还是异步回发。

您可以将UpdatePanel的ChildrenAsTriggers属性设置为false,并手动注册实际触发回发的控件-例如,您可能拥有具有java脚本处理程序的LinkButton/HyperLink。

此外,也许您可以减少可能导致回发的控件列表。例如,您可以使用锚点(A)代替链接按钮/超链接,然后设置隐藏变量,然后模拟(隐藏)按钮单击。在服务器端,隐藏变量的值将指示负责回发的实际控件。这样,您就可以拥有一个按钮,作为许多其他控件的回发控件。

最后,你真的希望拥有非常高效的请求/响应流,然后放弃ASP.NET控制模型,转而使用ASP.NET MVC。或者在规模较小的情况下,停止使用AJAX的更新面板(它们完成页面的发布,几乎整个页面周期都在服务器端执行),转而使用脚本服务(以及jquery插件)。

最后,您需要查看控件ids大小和实际响应大小-例如,100K响应内的5K长ids可能不是很大的开销。减少这些ids可能会给你节省5% (如果可能),但同样的努力值得吗?

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14193004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档