ASP.NET Validator控件减慢页面

时间:2010-03-11 21:01:50

标签: asp.net controls validation

我有一个UpdatePanel,它动态添加了用户控件。有时可能会有几十个用户控件。

随着更多用户控件的添加,页面/ UpdatePanel会减慢每次回发的大量时间。经过一番挖掘后,我惊讶地发现原因是每个用户控件上存在各种CompareValidator,CustomValidator,RegularExpressionValidator和RequiredFieldValidator控件。

有人有建议吗?令我感到非常特别的是,包含这些ASP.NET控件会对性能产生如此可怕的影响。

谢谢,

卡尔文

3 个答案:

答案 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