当前位置:  开发笔记 > 编程语言 > 正文

UpdatePanel中的ASP.NET验证器

如何解决《UpdatePanel中的ASP.NET验证器》经验,为你挑选了1个好方法。

由于运行时限制,我使用的是旧版本的ASP.NET AJAX,在更新面板中放置ASP.NET验证程序不起作用.是否有一个技巧可以使这些工作,或者我需要使用AJAX工具包附带的ValidatorCallOut控件?



1> Euro Micelli..:

我怀疑你正在运行.NET 2.0的原始版本(RTM).

直到2007年初,验证器控件与UpdatePanels不兼容.这是通过.NET Framework的SP1解决的.

问题的根源是UpdatePanel可以检测页面中的标记更改,但无法正确跟踪脚本.验证器严重依赖脚本.在部分回发期间,脚本要么被吹走,要么没有更新,或者在它们被要求时不运行.

在早期的测试版中,MS让UpdatePanel尝试猜测需要重新渲染或运行的脚本.它不能很好地工作,他们不得不把它拿出来.

为了解决当前的问题,Microsoft在一个名为Validators.DLL的新DLL中发布了验证器类的修补版本,并提供了如何告诉ASP.NET使用这些类而不是真实类的说明.如果您使用Google获取该DLL名称,则应该可以找到更多信息.另见此博客文章.

这是一个停止措施,如果可能的话,你不应该使用它来 避免它.

在.NET 2.0 SP1之后不久,问题的真正解决方案就出现了.Microsoft引入了一种在SP1中注册脚本的新机制,并将实际验证器类更改为使用该机制而不是旧机制.

让我告诉你一些有关变化的细节:

传统上,您应该通过Page.RegisterStartupScript()和Page.RegisterClientScriptBlock()等Page方法注册脚本.问题是这些方法不是为可扩展性而设计的,而UpdatePanel无法监视这些调用.

在SP1中,页面上有一个名为Page.ClientScripts的新属性对象.该对象具有注册与原始脚本等效(并且在某些方面更好)的脚本的方法.此外,UpdatePanel可以监视这些调用,以便在适当时重新呈现或调用方法.旧的RegisterStartupScript()等方法已被弃用.它们仍然可以工作,但不在UpdatePanel中.

没有理由(除了政治,我想)不要将您的安装更新到.NET 2.0 SP1.Service Pack带有重要的修复.

祝好运.

推荐阅读
帆侮听我悄悄说星星
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有