ajax.net Profession 点滴
学习了一下,把这过程中值得一说的拿出来说说。
先谈谈版本问题吧,在作者的网站上,说是ajax.net已经不再开发,有一个开源的版本是在他的版本基础上继续开发的,主要是增加了ajax控件吧。而 作者重新开发了一个ajax.net profession ,咳,搞不懂why。目前还是一个beta版本,我学习的就是这个。现在这个网站好像变成了 demo,原来的页面找不到了,sorry,就不提供链接了,给个作者的blog吧,http: //weblogs.asp.net/mschwarz/ 。
有关版权和源码问题,在yahoo小组曾经有过讨论,有人说schwarz一直不申明这个软件是否free,而schwarz则说,是free的,只不过 他不知道到底采用何种版权申明,所以没明确下来。而源码,前几天刚发布了一个,不是最新版的,我已收到这个源码,但还没仔细看。
回到主题,谈谈学习过程中的收获。先申明一下,本人不是专职开发人员,技术水准有限,以下都是一个新手的记录而已,呵。
首先学习ajax.net Pro,最好还是看demo。基本把它的作用和使用说清楚了。
我是在2.0环境下学习的,这里有一个和1.1不同的地方,就是网页对应类的namespace问题。vs2005新建一个页面,默认的网页代码文件里没 有namespace声明,而demo里很明确的表明,要调用ajax.method,就要用 namespace.classname.methodname的方式,解决办法,开始是修改网页,强制声明namespace。后来在这里的一篇 blog(忘记是哪篇了,sorry)提到,不申明namespace,那默认的就是ASP,果然,用这个命名空间就OK了. 如果是新手,调测时报告找不到方法对象,就很可能和这个namespace有关。
后来又遇上个问题,我申明了一个类,没有默认的空参数的构造函数,在js文件中将这个类作为method的参数,结果调用时老是返回找不到构造函数的错 误,与demo比较了半天才定位到这个错误原因,看来ajax.netPro支持的类传递还是有很多限制的,可惜没有比较好的文档说清楚。
最后,给一点代码,一篇文章,没代码怎么成? ;) (以下代码大部分抄袭demo,赫赫。)
要使用ajax.netPro,先按照http://dotnet2.schwarz-interactive.de/quickguide.aspx 做
配置一下web.config
先谈谈版本问题吧,在作者的网站上,说是ajax.net已经不再开发,有一个开源的版本是在他的版本基础上继续开发的,主要是增加了ajax控件吧。而 作者重新开发了一个ajax.net profession ,咳,搞不懂why。目前还是一个beta版本,我学习的就是这个。现在这个网站好像变成了 demo,原来的页面找不到了,sorry,就不提供链接了,给个作者的blog吧,http: //weblogs.asp.net/mschwarz/ 。
有关版权和源码问题,在yahoo小组曾经有过讨论,有人说schwarz一直不申明这个软件是否free,而schwarz则说,是free的,只不过 他不知道到底采用何种版权申明,所以没明确下来。而源码,前几天刚发布了一个,不是最新版的,我已收到这个源码,但还没仔细看。
回到主题,谈谈学习过程中的收获。先申明一下,本人不是专职开发人员,技术水准有限,以下都是一个新手的记录而已,呵。
首先学习ajax.net Pro,最好还是看demo。基本把它的作用和使用说清楚了。
我是在2.0环境下学习的,这里有一个和1.1不同的地方,就是网页对应类的namespace问题。vs2005新建一个页面,默认的网页代码文件里没 有namespace声明,而demo里很明确的表明,要调用ajax.method,就要用 namespace.classname.methodname的方式,解决办法,开始是修改网页,强制声明namespace。后来在这里的一篇 blog(忘记是哪篇了,sorry)提到,不申明namespace,那默认的就是ASP,果然,用这个命名空间就OK了. 如果是新手,调测时报告找不到方法对象,就很可能和这个namespace有关。
后来又遇上个问题,我申明了一个类,没有默认的空参数的构造函数,在js文件中将这个类作为method的参数,结果调用时老是返回找不到构造函数的错 误,与demo比较了半天才定位到这个错误原因,看来ajax.netPro支持的类传递还是有很多限制的,可惜没有比较好的文档说清楚。
最后,给一点代码,一篇文章,没代码怎么成? ;) (以下代码大部分抄袭demo,赫赫。)
要使用ajax.netPro,先按照http://dotnet2.schwarz-interactive.de/quickguide.aspx 做
配置一下web.config
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.web>
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory, AjaxPro.2"/>
</httpHandlers>
[...]
</system.web>
其次,要在页面中注册一下
protected void Page_Load(object sender, EventArgs e)
{
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
}
将要在js里调用的方法加上ajax的属性,示例如下:
[AjaxPro.AjaxMethod]
public DateTime GetServerTime()
{
return DateTime.Now;
}
最后,在js中要调用这个GetServerTime,可以用这个办法:
function getServerTime()
{
alert(MyDemo._Default.GetServerTime();
}
说明一下,MyDemo._Default 是页面的类名,如果没有特别申明namespace,就改为ASP._Default 。这个调用方法其实是同步调用,也就是说,网页会挂起直到函数有返回值。而作者的示例是如下的异步调用方式:
function getServerTime()
{
MyDemo._Default.GetServerTime(getServerTime_callback); // asynchronous call
}
// This method will be called after the method has been executed
// and the result has been sent to the client.
function getServerTime_callback(res)
{
alert(res.value);
}
可以看出,每个[AjaxPro.AjaxMethod]在js里调用的方法有2个,一个是同步,如fun(参数1,参数2...),另一个是异步,fun(参数1,参数2...,callback_function)
而callback_function的参数就一个,res 。 可惜,res里面除了value,是否还有其他属性就不知道了,原来ajax.net文章里提到有url,error等,但我在ajax.netPro里测,没有这些。(老实说schwarz提供的文档还真少)有空看看源码就明白了,赫赫。
demo里面的应用有很多个,不再说明,就简单说一下和anthem的区别吧。
anthem主要是对控件进行包装,比如他提供了anthem.label,这样要做ajax效果就比较方便,而自定义类的函数调用,好像也可以,但明确只能用一些基本类型和dateset作为参数。而ajax.netPro的使用方式与之有很大不同,不提供控件,只提供对自定义类的ajax.method封装调用,使用时候写的js要比较多。但我个人喜欢这种方式,有更自由的感觉。
最后,感谢一下小气的神(ccBoy),他最近发的关于ajax架构的文章非常棒。(赫赫,就是只能大致明白他的意思,就是具体技术说明部分不是很看得懂)
posted on 2006-02-23 22:55 Simple is best 阅读(849) 评论(1) 编辑 收藏 举报