Ajax.NET关键
1、配置
·引用dll到bin
·web.config截断HTTP到Ajax工厂
<httpHandlers>
<add verb="POST,GET" path="ajaxpro/*.ashx" type="AjaxPro.AjaxHandlerFactory,AjaxPro.2"/>
</httpHandlers>
·运行时注册:
AjaxPro.Utility.RegisterTypeForAjax(typeof(AH.Factrory));
AjaxPro.Utility.RegisterTypeForAjax(typeof(_Default));
当前ns或其他ns皆可
2、服务器程序:
使用标记,参数随便
[AjaxPro.AjaxMethod]
public string GetServerTime(string par,string ui)
{
string str = DateTime.Now.ToString();
System.Threading.Thread.Sleep(2220);
return str + par + DateTime.Now.ToString()+ui;
}
3、客户端脚本
function getServerTime_callback(res)
{
$("display").innerHTML +=res.value+"<br/>";
}
function dod(){
AH.Factrory.GetServerTime("|+|","*******\9中文774r",getServerTime_callback);
}
直接从ns作为js对象,层层向下引用,直到调用方法。
第三个参数为异步回调函数。同步调用方法返回值就是服务器返回值。
4、牛狴之处
·多线程,比MagcAjax强悍许多。允许客户端同时跑很多异步线程,并行不悖。同步异步区别方便。
·多参数传递灵活,这比ICall好用多了,客户端脚本直接从ns引用服务器对象,用起来极爽。
·后台类型兼容到脚本环境,参考example,17种数据类型前后台互兼容。
·FF兼容(可惜Opera不兼容)
附:异步回调参数res
error
value
request
context
"Move On Now"
Baby, Baby i think its time we move on now
Baby, Baby i think its time we move on now
Looking out my bedroom window
See the planes take off from Heathrow
one by one they come and go
on and on on and on
I think about the places i'd go
I think about this place i call home
All the shots and all that come
all around all around
Red light blinking in the twighlight
tracing in a path right out of here and now
Red light blinking in the twighlight
tracing in a path right out of here and now
Baby, Baby i think its time we move on now
Baby, Baby i think its time we move on now
Don't you think its quiet around here
Doesn't seem so much to do here
Thinking back to this time last year
Good times good times good times
Don't you think we stay for too long
Don't you think the colour has gone
Get on a plane it can't be wrong
Moving on, Moving on
Red light blinking in the twighlight
tracing in a path right out of here and now
Red light blinking in the twighlight
tracing in a path right out of here and now
Baby, Baby i think its time we move on now
Baby, Baby i think its time we move on now
Baby, Baby i think its time we move on now
Baby, Baby i think its time we move on now
Baby, Baby
Baby, Baby
Baby, Baby i think its time we move on now
Those things they look empty
But wait til it all comes down
Nothings going on round here
Its time we let it change
Got a feeling my love
We've gotta get out
Before it brings us down (down down)
%butterfly
clear;clc;
z=[-0.5,0.1];
dz=[1e-9,0];
z1=[0,0];
z2=[0,0];
z0=[0,0];
tz=[0,0];
%#dz
N=1e7;
%#二分
n=1e5;
sita=0:pi/20:2*pi;
plot(cos(sita)/3,sin(sita)/3);
hold all;
while(N>0)
N=N-1;
%edge
tz=z+dz;
if tz(1)>1/2
tz(1)=tz(1)-1;
elseif tz(1)<-1/2
tz(1)=tz(1)+1;
end
if tz(2)>1/2
tz(2)=tz(2)-1;
elseif tz(2)<-1/2
tz(2)=tz(2)+1;
end
%collapse
if(norm(3*z)>=1 && norm(3*tz)<1)
n=1e5;
z1=z;
z2=tz;
while(n>0)
n=n-1;
%do erfen
z0=(z1+z2)/2;
end
end
plot(z(1),z(2),'.');
end
xlim([-1/2,1/2]);
ylim([-1/2,1/2]);
rar a -xC:\Merssenger\backUp -agYYYY{年}MM{月}DD{日}HH{_}MM 备份 @list.txt
示例代码下载4K
在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部分同 beta2 有不少改动。而且在越来越多的 Ajax 开发包被开发出来的情况下, ASP.NET2.0 自带的无刷新页面技术没有被很多人了解,甚至不少人认为该功能有些“鸡肋”。但如果我们仅仅是在程序中加入很少部分的 Ajax 特性, Atlas 、 Ajax.Net 等就显得有些“杀鸡用牛刀”的感觉了。而且,我认为使用 ASP.NET2.0 提供的方法进行开发并不很复杂,相反,使用很少的代码就可以做出来很棒的效果!
下面我来一步一步的带大家开发无刷新的页面!
第一步:实现 ICallbackEventHandler 接口
建立一个 Web 网站,我们来修改 default.aspx.cs 文件:
第二步:注册回调方法
";
下面我们来分析一下这些代码。
ClientScript是System.Web.UI.Page对象的一个属性,它是System.Web.UI.ClientScriptManager对象。用于管理客户端脚本,GetCallbackEventReference方法用于注册一个服务器端事件的客户端回调。它的第四个参数“Context”非常重要,但在MSDN中并没有相关的例子和详细的说明。在我上面给的代码中可以看到,调用CallServer方法时,传递的Context参数就是Label1,而ReceiveServerData的第二个参数“Context”就是被传递过来的Label1。在我的例子中,Context被我用于设定一个用来显示服务端返回结果的控件。其实,你可以将任意的对象赋值给Context,它都会被传递给本地端处理回调返回结果的函数,这样,你就可以根据调用前指定的“上下文”灵活的操作返回结果了!在我给出的完整例子中,你可以看到一个使用Context做的无刷新显示GridView的例子。
在这里我要说个题外话,Context这么重要的参数在MSDN中不但没有详细的说明,而且VS2005中文正式版MSDN中关于回调的例子竟然还是beta2时的实现!这个版本的MSDN可以说是我用过的版本中品质最差的。不过现在的MSND可以用“相当”庞大来形容,出错也是在所难免的,希望下个版本的MSND会好一些。
OK,在ASP.NET 2.0中开发具有Ajax特性的东东不难吧!其实就是两步:
1、 在Server端实现ICallbackEventHandler接口,在接口包含的方法中根据传递的参数分别调用不同的处理方法,然后返回结果;
2、 在Client端注册回调函数(当然你也可以在Server端注册),然后实现处理回调结果的函数。其中,如果对Context能干灵活运行,你就可以做出非常好的效果了。
在我给出的完整例子中,你们可以看到更完整的处理逻辑和更漂亮的特效,当然,增加的代码还是很少的!
有将近一年没有写Blog了,手也比较生了。以前cnblogs的文章我是基本上天天都看的,现在一两个星期看一次就不错了,还是走马观花的浏览几篇而已。如今每天都是为了生活而奔波,人在江湖,身不由己呀!
发了半天牢骚,我也预告一下,我会在最近写一些介绍Atlas的文章。其实Atlas也有很多人都写过了,不过大都是根据官方文档的模式写的,而最近发布的几版CTP变化挺大的(实现的功能也比较诱人!),对新特性介绍的文章比较少,所以我就来献丑了,希望对大家使用Atlas有所帮助。
http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html
------- 转发的邮件 -------
寄件人: "Leon.Zhou" <>
收件人:
抄送:
主题: ASP.NET 2.0 正式版中无刷新页面的开发
日期: Fri, 31 Mar 2006 10:47:00 +0800
示例代码 下载4K
在已经发布的 ASP.NET2.0 中,无刷新页面开发相关部 分同 beta2 有不少改动。而且在越来越 多的 Ajax 开发包被开发出来的情况 下, ASP.NET2.0
自带的无刷新页面技术没有 被很多人了解,甚至不少人认为该功能有些“鸡肋”。但如果我们仅仅是在程序中加入 很少部分的 Ajax 特性, Atlas 、 Ajax.Net
等就显得有些“杀鸡用牛刀” 的感觉了。而且,我认为使用 ASP.NET2.0 提供的方法进行开发并不很 复杂,相反,使用很少的代码就可以做出来很棒的效果!
下面我来一步一 步的带大家开发无刷新的页面!
第一步:实现 ICallbackEventHandler 接口
ICallbackEventHandler接口 位于System.Web.UI命名空间 下。在beta2时,ICallbackEventHandler只包含一个RaiseCallbackEvent方法,即处理回调事件,又返回处理结果。在正式版中,它变成了包含
GetCallbackResult和RaiseCallbackEvent两个成员方法,第一个用来返回回调事件的结果,第二个用来出来回调 事件。这个变化主要是为了编写Web控件而做的改动,具体可以看一下
GridView等控件中的实现代码。
建立一个 Web 网站,我们来修改 default.aspx.cs 文件:
1 public partial class _Default : System.Web.UI.Page, ICallbackEventHandler
1 private string str;
2 public void RaiseCallbackEvent(string eventArgument)
3 {
4 //可以根据传递的参数不同,调用 不同的处理逻辑
5 str = "从服务器端返回的内 容:" + eventArgument;
6 }
7
8 public string GetCallbackResult()
9 {
10 return str;
11 }
12
第二步:注册回调方法
我们在 default.aspx 页面中添加一个 TextBox ,一个 Label 和一个 Html 控件 Button ,并给 Button 添加
onclick 事件:
1 <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
2 <input id="Button1" type="button" value="提交到Label1" onclick="CallServer(TextBox1,
Label1)"/><br/>
3 <asp:Label ID="Label1" runat="server" Text="Label1:"></asp:Label>
4
1 <script type="text/javascript">
2 //由button调用
3 function CallServer(inputcontrol, context)
4 {
5 context.innerHTML = "Loading";
6 arg = inputcontrol.value;
7 //注册回调方法
8 <%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
9 }
10 //在回调方法中注册的接收返回结果的函数
11 function ReceiveServerData(result, context)
12 {
13 context.innerHTML = result;
14 }
15 </script>
16
好 了,一个无刷新的页面就开发完了,它可以将你在 TextBox 中输入 的文字,通过服务器代码写回到页面的 Label 中。是 不是很简单?你可以运行一下你的程序看看效果啦!
下 面我们来分析一下这些代码。
首先,我们看
<%= ClientScript.GetCallbackEventReference(this, "arg", "ReceiveServerData", "context")%>;
ClientScript是 System.Web.UI.Page对象的一个属 性,它是System.Web.UI.ClientScriptManager对象。用于管理
客户端脚本,GetCallbackEventReference方法用于注册一个服务器端事件的客户端 回调。它的第四个参数“Context”非常重要,但 在MSDN中并没有相关的例子和详细的说明。在我上面给的
代码中可以看到,调用CallServer方法时,传递的Context参数就是Label1,而ReceiveServerData的第二个参数“Context”就是被传递过来的Label1。在我的例子中,Context
http://pfzhou.cnblogs.com/archive/2006/03/31/363342.html
清明时节雨纷纷,路上行人欲断魂。
借问酒家何处有?牧童遥指杏花村。
----(唐)杜 牧
December 2005 January 2006 February 2006 March 2006 April 2006