详解ASP.NET AJAX
创始人
2024-04-19 11:50:54
0

我们来看一下使用组件思想重新编写的这个应用。首先看一下aspx页面:

Default.aspx:

  1. DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">  
  2. htmlxmlns="http://www.w3.org/1999/xhtml">  
  3. headrunat="server">  
  4. <title>UntitledPagetitle>  
  5. head>  
  6. <body>  
  7. formid="form1"runat="server">  
  8. asp:ScriptManagerID="ScriptManager1"runat="server">  
  9. <Scripts>  
  10. asp:ScriptReferenceAssembly="Microsoft.Web.Preview"Name="PreviewScript.js"/>  
  11. asp:ScriptReferencePath="~/ajax.js"/>  
  12. Scripts>  
  13. <Services>  
  14. asp:ServiceReferencePath="~/SayHelloService.asmx"/>  
  15. Services>  
  16. asp:ScriptManager>  
  17. <div>  
  18. inputid="btnSayHello"type="button"value="SayHello"/>  
  19. divid="result">div>  
  20. div>  
  21. form>24body>25html> 

这里有两处变化,一是在ScriptManager控件里增加了对PreviewScript.js的引用。这里要注意,客户端组件的内容并不包含在ASP.NET AJAX1.0正式版里,而是包换在ASP.NET AJAX Futures CTP部分。所以,要使用这些功能,首先要添加对Microsoft.Web.Preview.dll文件的引用,这个文件在ASP.NET AJAX Futures CTP的安装目录里,然后要在页面中添加对PreviewScript.js文件的引用。

第二个变化是这里的btnSayHello已经没有了onclick属性,那么如何知道单击这个按钮的时候需要执行何种代码呢?答案在js文件里。

ajax.js:

  1. var btnSayHello;  
  2. var lblResult;    
  3. Sys.Application.add_init(onPageInit);    
  4. function onPageInit()  
  5. {     btnSayHello=new Sys.Preview.UI.Button($get("btnSayHello"));      
  6. btnSayHello.initialize();      
  7. lblResult=new Sys.Preview.UI.Label($get("result"));    
  8. lblResult.initialize();    btnSayHello.add_click(btnSayHello_onClick);  
  9. }  
  10. function btnSayHello_onClick(){      
  11. SayHelloService.SayHello(OnSucceeded,OnFailded);  
  12. }function OnSucceeded(resultText){      
  13. lblResult.set_text(resultText);  
  14. }function OnFailded(error){    
  15. lblResult.set_text("调用失败。错误信息:"+error.get_message());} 


我们看到,应用组件编程思想后,JavaScript发生了巨大的改变。不着急,我们一步一步解析这个文件。

最顶上是定义了两个全局变量,这两个变量将分别存储对btnSayHello和result的引用。之所以要定义成全局变量,是方便在整个文件中调用两个控件。

Sys.Application.add_init(onPageInit);的作用是告诉页面当页面初始化时执行名为onPageInit的函数。

onPageInit是一个自定义函数,主要完成客户端控件的创建、初始化工作。以下面两行代码为例:

  1. btnSayHello=new Sys.Preview.UI.Button($get("btnSayHello"));  
  2. btnSayHello.initialize(); 


***行我想大多数人一看就知道是什么意思,因为那个“new”实在太亲切了,这正是创建一个Button的实例,并将其赋给btnSayHello变量。其中Sys.Preview.UI.Button是Button的完全限定名,而大多数控件的构造函数都需要一个参数,用来指出这个控件要关联到的DOM 元素。而第二行是必须的,在实例化一个控件后,***马上调用initialize方法,避免一些奇怪的情况发生。

  1. btnSayHello.add_click(btnSayHello_onClick); 


上面这行代码是将控件的单击事件与btnSayHello_onClick这个函数关联起来。这里我要专门说一下ASP.NET AJAX客户端控件的属性及事件的设置方法。

ASP.NET AJAX框架规定,在获取一个控件的属性时,应使用“控件名.get_属性名()”这种方法,而设置时则是“控件名.set_属性名()”。为一个控件的某个事件添加监听函数时,应该用“控件名.add_事件名()”,移除时用“控件名.remove_事件名()”。这是ASP.NET AJAX强制执行的命名规范,所有的客户端控件都遵从这个规则,以后我们在开发自己的客户端组件时,也应该遵从这个规则。

知道了以上知识,很多代码就很好理解了。例如“lblResult.set_text(resultText);”就是将lblResult控件的text属性设置为resultText。剩下的代码我就不解释了,应该没问题了。

【编辑推荐】

  1. 浅谈ASP.NET MVC框架
  2. 介绍ASP.NET MVC中的MvcAjaxPanel
  3. ASP.NET MVC框架拯救UpdatePanel
  4. 用ASP.NET MVC源代码寻找解决方案
  5. ASP.NET MVC框架的ActionInvoker

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...