2011-03-20 79 views
4

我正在写一个应用程序,用户可以在其中注册。虽然注册人可以选择多个选项,并根据这些注册人字段可见或不可见,并且是否需要。 我想出了一个想法,即所有字段将在updatePanel中,当用户更改注册选项时,我将设置服务器端这些字段的可见性。更新面板工作非常慢

它的工作原理,但令人难以置信的慢,什么更多的FF我已经给定的错误:

The state information is invalid for this page and might be corrupted

3复选框与其他领域都在UpdatePanel

每个字段的DL标签与runat="server>

我不得不这样做,因为“必需”选项的原因我简单地添加css类到这个dl(需要在JavaScript验证。如果字段应该是可见的我设置可见=“假”给定的dl,然后该字段例如名字带标题等在回传后不可见。

我做错了什么?为什么需要这么长时间(在本地主机~4分钟),并在Firefox中它并没有真正的工作(当我使用调试我认为该过程完成没有错误的FF,我不明白,在所有:)

如果更新面板是如此薄弱的改变能见度和向所有dls添加所需类别的其他选择。逻辑非常复杂,必须对DB进行查询,这么简单的javascript会非常棘手。

感谢您的任何提示,

哦,我使用ASP.Net并不能在这个项目上的升级。

感谢您的帮助, 再见

+2

发布您的代码 - “.aspx”的相关部分和后面的代码,也许您在那里做错了什么。 – 2011-03-20 08:34:31

+0

您是否在注册过程中使用电子邮件发送?如果是,那么与服务器的通信需要一些时间才能完成。 – Aristos 2011-03-20 08:37:23

+0

我会将UpdatePanels全部转储到一起。它们带来了很多开销 - 回发整个ViewState并导致整个页面生命周期开始(有时只是页面的一小部分)。 – Kon 2011-03-20 14:42:15

回答

4

没有代码来看看,这里有一般的东西,这将使缓慢的一个UpdatePanel:被提交的表单数据的

  • 量较大(如视图状态)。上传的数据通常比下载数据慢(取决于连接类型,例如上传速度比下载慢5倍的家庭连接)。即使你看不到它,页面上的每个表单域都会回发到服务器(即使它不在UpdatePanel中)。

我建议在Firebug中查看您的请求/响应数据,并确保您的异步请求小于5K并且您的响应不超过20K。

  • 发布UpdatePanel时正在运行的服务器上的进程较慢。当UpdatePanel被删除时,代码如何执行?

  • JavaScript错误(您的和微软的)。这里是一个已知错误和我自己使用的修复的链接:http://support.microsoft.com/?kbid=2000262

  • 大规模的DOM操作(听起来不是这样的)。

BTW,搜索您所报告的错误消息,使许多可能的原因: 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

您需要将更新面板属性更新模式设置为Conditional而不是Always。限制您放入一个更新面板的控件的数量

0

您可能需要检查页面事件等。页面指令和属性的研究AutoEventWireup 由于性能是突出显示的问题,因此您可能也需要检查。更新面板模式应该是有条件的。 检查触发器以及

0

尝试使用这些属性值Page directive。这总是在你的页面的顶部。让其他物业像以前一样在那里。 更新面板不应像您报告的那样慢。

<%@ Page ViewStateEncryptionMode="Never" EnableViewStateMac="false" 
     EnableEventValidation="false" %> 

我还想补充一点,如果你提到你的数据库查询是复杂的,走的是一条很长的时间,那么问题不在于aspx页面或更新面板,但随着你的数据库查询。然后,您需要对您的查询进行概要分析并检查执行的时间。在这种情况下,要在数据库级别调整查询。