ASP.NET Ajax 客户端框架未能加载
项目从VS 2003(.Net 1.1)升级到VS 2008(.Net 4.0)
添加ScriptManager、UpdatePanel后出现
"ASP.NET Ajax 客户端框架未能加载"
"Sys"未定义
试过搜索过的所有方法都不行。
在同一解决方案新建一个项目,随手建个.aspx都可以,不会出现以上提示。
但在原项目建个空.aspx添加控件后就是不行,解决方案有10+个项目,其中有调成功过1个项目,但过程调了很多,具体不知道问题出现在哪。后来按印象的步骤去调其它项目,也还是不行。
感觉问题出现在Web.config或引用的DLL上。
特来求助!
--------------------编程问答-------------------- --------------------编程问答-------------------- 看看你“随手建的”项目的web.config文件内容有什么不同。删除你的vs2003下创建的垃圾web.config文件,拷贝精简的web.config文件内容。 --------------------编程问答-------------------- vs2008的版本是.net3.5,
vs2010的版本是.net4.0,
.net4.0的是MicrosoftAjax,这个一直在更新,最新的版本发布于2011年11月
到官网下载对应的版本:
http://ajaxcontroltoolkit.codeplex.com/releases/view/76976
在项目中引用ajaxcontrolToolkit.dll
webconfig配置:
<controls>
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit" />
....
如果页面中静态声明,可以对应的这么写:
<ajaxToolkit:ToolkitScriptManager ID="Tsm1" runat="server"></ajaxToolkit:ToolkitScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
.... --------------------编程问答-------------------- “ScriptManager、UpdatePanel、"ASP.NET Ajax 客户端框架未能加载"、"Sys"未定义”等跟 asp.net ajax toolkit没有关系,不需要声明那个asssembly。
而且微软一直没有真正去开发ajax toolkit,而是正了个简单的jQuery文件就放弃asp.net ajax进一步支持了,所以即年前我也就只好放弃试用ajax toolkit了。 --------------------编程问答-------------------- 实际上,microsoftAjax的客户端框架,完全可以脱离asp.net使用
客户端只要引用microsfotAjax.js,整个客户端开发平台就搭建起来了,
而这个js库仅仅84k,微软还提供CDN加速
Microsoft Ajax Library 客户端引用:
.net4.0:
http://msdn.microsoft.com/zh-cn/library/bb397536.aspx
.net3.5:
http://msdn.microsoft.com/zh-cn/library/bb397536(v=vs.90).aspx --------------------编程问答--------------------
无论是服务器控件,还是客户端控件,都使用自己的控件库,
有现成的,就继承过来自己扩展,没现成的,自己开发咯 --------------------编程问答--------------------
在没有认真了解microsoftAjax之前,我持有和你一样的观点,
正如3楼所述,微软一直在更新ajax库
不知道5楼的链接你是否仔细看过 --------------------编程问答-------------------- 多谢两位回复。
Webconfig我有删掉,让VS重建过。也不行。
http://msdn.microsoft.com/zh-cn/library/bb397536.aspx这个地址介绍的空间都要引用么?
microsfotAjax.js这个文件有直接下载吧?
--------------------编程问答-------------------- Sys 命名空间
Sys.Net 命名空间
Sys.Serialization 命名空间、
Sys.Services 命名空间
Sys.UI 命名空间。
Sys.WebForms 命名空间
添加引用里面找不到这些DLL来引用,这几个是怎么来的? --------------------编程问答-------------------- 3楼说了,你只要引用一个dll就可以了 --------------------编程问答-------------------- 还是提示那个不能加载,感觉不像是需要添加这个microsoftAjax.dll的问题,我随手建的项目不用加这个DLL都可以的。
HTML代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="Smart.Web.UI.SystemData.WebForm1" %>
<%@ Register Assembly="AjaxControlToolkit" Namespace="AjaxControlToolkit" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<ajaxtoolkit:toolkitscriptmanager ID="Tsm1" runat="server"></ajaxtoolkit:toolkitscriptmanager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
</ContentTemplate>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
web.config
<?xml version="1.0"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Web.Extensions.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
<add assembly="System.Design, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>
<add assembly="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
</assemblies>
</compilation>
<globalization responseEncoding="utf-8" requestEncoding="utf-8"/>
<pages>
<controls>
<add namespace="AjaxControlToolkit" assembly="AjaxControlToolkit" tagPrefix="ajaxToolkit" />
</controls>
</pages>
</system.web>
</configuration>
--------------------编程问答-------------------- 我看一个前端类库,最低级的,要看看它的grid电子表编辑控件的功能是否强大。
假设一个类库连这个都没有,只有一些“小鱼小虾”小技巧,我觉得那类ajax框架与我需要制作的企业应用系统的要求相差很远,我完全可以因为别的框架需要掌握而立刻放弃这类学习曲线奇陡、连简单的grid表控件都没有的框架。 --------------------编程问答-------------------- 而开发普通的网页,使用很简单的jQuery体系架构等就很好。实在需要时我宁可花钱请人去开发jQuery插件,因为它值得维护。 --------------------编程问答--------------------
我说的是引用ajaxcontrolToolkit.dll,
而不是microsoftAjax.dll,实际上没有你说的这个东东
微软的ajax库的名字叫做:microsoftAjax,它涵盖的不仅仅是你所用到的这个ajaxcontrolToolkit.dll --------------------编程问答--------------------
我是觉得微软这个控件比较好用,其它代码写CS里挺方便, grid也是用微软的grid,没用第三方的。
对AJAX了解比较少 --------------------编程问答--------------------
我打错了,我是引用ajaxcontrolToolkit.dll。 --------------------编程问答--------------------
一个类库的生产效率在于是否能支持面向对象设计的实现要求,
如果说SL的UI换成html,我可不想把所有的界面都重新开发一遍,
即便没有gird,也是视图控制器自己去渲染视图,根本就不需要程序员面对dom,
程序员最多面对的是UI无关的统一ViewModel,
当我们需要一个grid或者list输出的时候,
根本就不需要知道驱动器到底是用table还是list又或者是div去渲染的
一个网格的编辑功能无非就是一个输出视图和输入视图的组装,
无论是microsfotAjax,winform,webform,SL,都能以OOPL的编程方式支持我们对视图的统一描述,
即便没有gird,也是视图控制器自己去渲染视图,根本就不需要程序员面对dom,
程序员最多面对的是UI无关的统一ViewModel,
当我们需要一个grid或者list输出的时候,
根本就不需要知道驱动器到底是用table还是list又或者是div去渲染的
一个网格的编辑功能无非就是一个输出视图和输入视图的组装,
无论是microsfotAjax,winform,webform,SL,都能以OOPL的编程方式支持我们对视图的统一描述,
--------------------编程问答-------------------- 我新创建的项目用ajaxcontrolToolkit.dll,也没问题
就是原项目上的怎么用都有那个问题。郁闷死我了
不知道IIS有没有关系? 原项目是IIS有虚拟目录指向的,而新的项目是VS虚拟一个端口的。 --------------------编程问答-------------------- 你应该检查web项目引用的.net组件:
System.Web.Extensions的版本是否正确,
--------------------编程问答--------------------
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args)
{
if (args.get_error() != undefined)
{
if(args.get_error().message.substring(0, 51) == "Sys.WebForms.PageRequestManagerParserErrorException")
{
//window.location.reload(); //出现Session丢失时的错误处理,可以自己定义。
document.getElementById("登陆控件的ID").click();
}
else
{
alert("发生错误!原因可能是数据不完整,或网络延迟。"); //其他错误的处理。
}
args.set_errorHandled(true);
}
}
在页面加上这句话试试
--------------------编程问答-------------------- http://blog.csdn.net/fengyarongaa/article/details/7525615 --------------------编程问答--------------------
删除过System.Web.Extensions,重新添加Net4.0的了,检查过NET的DLL都是4.0了,除自已的类外。 --------------------编程问答--------------------
试了也不行。JS也是报Sys.WebForms.PageRequestManager这行的'Sys'未定义 --------------------编程问答-------------------- 子项目可以加载了,但主项目不行。
好像问题出现在IIS上,默认.AXD好像不行,修改一下再保存回来好像才行。
我的系统是 XP + IIS5.1 --------------------编程问答-------------------- Ajax确实有点难弄 --------------------编程问答-------------------- http://weblogs.asp.net/chrisri/archive/2007/02/02/demystifying-sys-is-undefined.aspx 请参考 sys 找不到的解决办法 --------------------编程问答-------------------- <httpHandlers>
<add verb="GET,HEAD" path="ScriptResource.axd" type="System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate="false"/>
</httpHandlers> --------------------编程问答-------------------- VS 2008 不是.NET4 --------------------编程问答-------------------- 如果是 iis7 就放在 <system.webServer> 里面 --------------------编程问答-------------------- --------------------编程问答-------------------- 估计是因为ajax版本不一致 --------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答--------------------
我说错了,是升级到VS2010(.Net4.0) --------------------编程问答--------------------
这个也没效,郁闷中!
补充:.NET技术 , ASP.NET