由于运行时限制,我使用的是旧版本的ASP.NET AJAX,在更新面板中放置ASP.NET验证程序不起作用.是否有一个技巧可以使这些工作,或者我需要使用AJAX工具包附带的ValidatorCallOut控件?
我怀疑你正在运行.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带有重要的修复.
祝好运.