"AjaxControlToolkit" 未定义错误

7
我正在使用VS2005中的,它可以正常工作。但是,当我转到某些页面并单击“返回”时,会出现此JavaScript错误:

'AjaxControlToolkit'未定义

我已经在MSDN论坛和Google上搜索并尝试了许多解决方案,如EnablePartialRendering="true"等,但没有一个有效。除了重写所有内容并更改应用程序的工作流程之外,是否有任何方法找到此问题的根本原因或解决方法?

我在一个使用AjaxControlToolkit.CalendarBehavior动态添加日历扩展控件(及相关控件)的页面上遇到了相同的错误。下面的链接关于切换到Sys.Extended.UI.CalendarBehavior解决了我的问题。 - DaveD
在我的情况下,问题是我使用了asp:ScriptManager。使用ajax:ToolKitScriptManager解决了这个问题。 - Tillito
Tilito解决了我的这个问题。 - Doreen
6个回答

7

我已经解决了这个问题,但并不是通过设置CombineScripts="false"来解决的,而是通过使用这篇文章中描述的方法解决的。

最新版本发生了一些更改,因此您需要在registerClass调用中使用Sys.Extended.UI.BehaviorBase而不是AjaxControlToolkit.BehaviorBase


这个要加在哪里? - SHEKHAR SHETE

3
为了解决“AjaxControlToolkit未定义”的错误,您可能还需要确保在ToolkitScriptManager配置中将CombineScripts设置为false。这可以在您的主页面中找到,并且这个解决方案对我很有效。
<myTagPrefix:ToolkitScriptManager ID="ScriptManager1" runat="server" EnablePageMethods="true" EnablePartialRendering="true" SupportsPartialRendering="true" **CombineScripts="false"**>

请注意,你需要将 myTagPrefix 修改为你在 AjaxControlToolkit 中使用的标签前缀。通常情况下,在 aspx 文件的顶部会定义此标签前缀,如下所示...

<%@ Register assembly="AjaxControlToolkit" namespace="AjaxControlToolkit" tagprefix="myTagPrefix" %>

CombineScripts="false" 对于 nopCommerce 1.9 管理页面对我很有效。 - Rahatur

1
这可能是个愚蠢的问题,但你确认过你的aspx文件顶部是否有工具包引用了吗?
(为方便阅读添加)
尝试将以下内容添加到你的web.config文件中。
<system.web.extensions>
    <scripting>
        <scriptResourceHandler enableCompression="false" enableCaching="false" />
    </scripting></system.web.extensions>

是的,它被引用了。如果我直接访问页面或从链接访问,它可以正常工作,只有在使用后退按钮时才会出现此错误。 - ScaleOvenStove
这可能只是一个解决方法..但值得一试。尝试将以下内容添加到您的web.config文件中: <system.web.extensions> <scripting> <scriptResourceHandler enableCompression="false" enableCaching="false" /> </scripting> </system.web.extensions> - CodeRot
这帮助我解决了一个问题,当我从Citrix上托管的IE7浏览我的网站时。基于Citrix的浏览器没有正确地解压缩脚本。 - Robert Van Hoose

0

如果仍然没有解决问题,请确认您没有缓存此ascx/aspx文件。请移除OutputCache声明。


0

这是 JavaScript 错误吗?

我想这可能与工具包中的后退按钮支持有关。

而且未定义的错误通常是因为包含 "AjaxControlToolkit" 的脚本没有被正确加载。

以下是可能出现的问题:

  • 脚本加载的顺序,工具包是否优先加载?
  • 当任何已加载的脚本中存在错误时,所有其他尚未加载的脚本将被取消加载。

查看问题页面的输出 HTML,找到所有 AXD 文件的链接,并确保您可以下载它们并查看其中有效的 JavaScript。

如果您还没有使用 FirefoxFirebug,您应该能够跟踪到实际发出错误的脚本行。

希望这可以帮助您。


就像您所说的那样,存在后退按钮问题。我已经使用了 Fiddler/Firebug 工具。我可以看到错误发生的地方,在后退按钮时没有加载所有 jscript,但如果从链接打开页面,则不会出现此问题。不确定如何使其加载所有 jscript,无论是否使用后退按钮,而不需要重写代码。 - ScaleOvenStove
你在除了后退按钮支持之外的其他地方使用过AjaxControlToolkit吗? - chakrit

0
如 [CodeRot] 所说,您需要确保已经设置好了所有 AJAX 的 Web.config 扩展,这是在做 ASP.NET AJAX 网站时最容易被忽略的地方(特别是从 VS2005 开始)。
接下来,请确保页面上有 ScriptManager(我猜您已经从“EnablePartialRendering”中提到过了)。
请确保引用了适用于您的 .NET 版本的 AjaxControlToolkit 版本,它被编译为 .NET 2.0 和 .NET 3.5,并且我相信最新版本只支持 .NET 3.5。
确保将 Microsoft AJAX 客户端库添加到页面中(没有任何关于“Sys”缺失的错误)。
请确保在 ASPX、ASCX 或 Web.config 中注册 AjaxControlToolkit。

所有的工作都已完成。这是网络上最常见的答案。AjaxControlToolkit正常工作。只是在返回按钮上出现了jscript错误。我正在使用它的ajax控件,否则它们工作得很好。 - ScaleOvenStove

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接