大家都很惊叹微软的Ajax.NET简单的操作,但是有没有觉得它的灵活性大大减小了呢?以前纯手写的xmlhttm的Ajax和AjaxPor.dll提供的Ajax都是非常灵活的,可以使用任意的客户端触发方式(onclick,onmouseover,onkeydown...),和调用任意的服务器端自定义函数。而微软的Ajax.net似乎只能使用服务器控件的很少的事件,最常用的就是Button的onclick事件,而服务器端的函数也似乎只能是服务器端控件的事件函数,难道我们在页面上每添加一个Ajax功能,就要多添加一个Button控件和它的一个onclick事件吗?这似乎非常的不灵活啊!
我们程序员当然是想越简单越好,还要越灵活越好,要是为了简单而失去了灵活,那就失去意义了。
下面这个例子就是我利用Ajax.net的__doPostBack()函数演示如何做到非常灵活地使用Ajax.net,灵活到客户端使用任意触发方式,传递任意参数,服务器端调用任何函数,做任何想做的事情。
下面是源代码,注:需要配置Web.config并且需要有Web.Extensions控件。实例下载包(包括web.config和Web.Extensions)
FanGAjax.aspx
-------------------
FanGAjax.aspx.cs
---------------
-----------
其中:HTMLButton是一个简单的HTML按钮,不是服务器控件,它的Click动作也能触发AJAX,并且调用后台的函数MyServerFun1
“Put Mouse over here”的Span也是简单的HTML Span,它的Onmouseover事件也能触发AJAX,调用后台的MyServerFun2
MyServerFun1和MyServerFun2都是普通的Server自定义函数,并非控件的事件函数。
其实大家一看就明白,实例还是通过一个Button控件__AJAXENTRANCE和一个隐藏域__AJAXAGRS来触发AJAX和传递参数的,这仅仅是一个小技巧而已,但是却能给我们带来非常大的灵活性!