我正在编写一个用户可以注册的应用程序。注册一个选项可以选择几个选项,并根据这些regiester字段是否可见,是否需要。 我想到了所有字段都在updatePanel中,当用户更改注册选项时,我会在服务器端设置这些字段的可见性。
它的工作原理但速度非常慢,而且FF上有更多错误:
状态信息无效 此页面可能已损坏
其他字段的3个复选框位于updatePanel
中每个字段都在runat="server>
我必须这样做,因为“必需”选项的原因我只是将css类添加到此dl(需要在javascript验证中。如果字段应该可见,我为给定的dl设置visible =“false”然后该字段例如,带回标题的FirstName等在回发后是不可见的。
我做错了吗?为什么它需要这么长时间(在本地主机上约4分钟)而在Firefox中它并没有真正起作用(当我使用调试时我认为该过程在ff上完成没有错误,我根本不明白:)
如果更新Panel太弱,那么更改可见性和向所有dls添加所需类的其他选项。逻辑非常复杂,必须对DB进行查询,因此简单的javascript非常棘手。
感谢任何提示,
哦,我正在使用ASP.Net并且无法升级此项目。
感谢您的帮助, 再见
答案 0 :(得分:4)
无需查看代码,以下是使UpdatePanel变慢的一般事项:
我建议您在Firebug中查看您的请求/响应数据,并确保您的异步请求小于5K,并且您的响应不超过20K。
发布UpdatePanel时正在运行的服务器上的慢进程。删除UpdatePanel后,您的代码如何执行?
JavaScript错误(你和微软)。以下是我自己使用的已知错误和修复的链接:http://support.microsoft.com/?kbid=2000262
大量的DOM操作(听起来不是这种情况)。
顺便说一句,搜索您报告的错误消息会导致许多可能的原因: http://www.google.com/search?aq=f&sourceid=chrome&ie=UTF-8&q=The+state+information+is+invalid+for+this+page+and+might+be+corrupted
与往常一样,最小化或删除对ViewState的依赖...它是许多问题的根源,并且可以做出糟糕的设计决策。
答案 1 :(得分:1)
您需要将更新面板属性更新模式设置为Conditional
而不是Always
。限制您放入一个更新面板的控件数量
答案 2 :(得分:0)
您可能需要检查,页面事件等。研究页面指令和属性AutoEventWireup 由于性能是您突出显示的问题,您可能也想检查它。更新面板模式应该是有条件的。 同时检查触发器
答案 3 :(得分:0)
在Page directive
中尝试使用这些属性值。这始终位于页面顶部。让其他属性像以前一样存在。 更新面板不应该像报告一样慢。
<%@ Page ViewStateEncryptionMode="Never" EnableViewStateMac="false"
EnableEventValidation="false" %>
我还想补充一点,如果您提到的数据库查询很复杂,需要很长时间,那么问题不在于aspx页面或更新面板,而在于您的数据库查询。然后,您需要对查询进行概要分析,并检查执行所花费的时间。在这种情况下,方法是在数据库级别微调您的查询。