我有一个UpdatePanel,它动态添加了用户控件。有时可能会有几十个用户控件。
随着更多用户控件的添加,页面/ UpdatePanel会减慢每次回发的大量时间。经过一番挖掘后,我惊讶地发现原因是每个用户控件上存在各种CompareValidator,CustomValidator,RegularExpressionValidator和RequiredFieldValidator控件。
有人有建议吗?令我感到非常特别的是,包含这些ASP.NET控件会对性能产生如此可怕的影响。
谢谢,
卡尔文
答案 0 :(得分:0)
如果你有很多验证器,并且启用了客户端验证,那么浏览器可能很难完成所有验证。
答案 1 :(得分:0)
有几件事。首先,所有ASP.NET Validation控件都会生成大量的JavaScript,这些JavaScript作为WebResource或ScriptResource添加到页面中。这些脚本下载一次然后缓存,因此它们不应该导致问题导致频繁发生缓慢。
另一件事是更新面板。更新面板是一个很棒的控件,但它确实在ViewState上进行中继。这意味着您在更新面板中放置了任何控件,该控件的视图状态将在回发时发送到服务器。随着UpdatePanel内部的控件增加,ViewState将增加。
一种解决方案可能是在不需要它们的控件上关闭ViewState。您还可以强制ViewState在页面底部移动。这将确保最后下载ViewState。
这是我的帖子,描述了如何创建ViewState移动器控件:
http://azamsharp.com/Posts/139_ViewStateMoverModule_Released_.aspx
答案 2 :(得分:0)
大部分(全部?)ASP.NET验证控件自.NET框架的第一个版本开始就存在,并且它们符合那个时代的一般Web控件氛围:'在我的T1线路上工作正常。 “
对于性能敏感的应用程序,我不会使用这些。有解决方法,但治愈可能比疾病更糟。 (例如,您可以通过设置EnableClientScript = false
来完成服务器上的所有验证。)
如今,我通常使用jQuery Validation plugin。