在ASP.NET Atlas中调用Web Service——在页面加载时调用Web Service

作者:Dflying Chen ( http://dflying.cnblogs.com/

很多时候我们需要在页面加载以后立刻调用一些Web Service,比如一个客户端的Atlas ListView会在加载后立刻得到初始化的填充数据。虽然这可以使用Atlas的InitialData控件完成,但对于其它的一些要求,比如在页面加载后立刻执行一段Atlas脚本(其中用到了Atlas对JavaScript的扩展),我们仍需要一个页面加载的事件来触发这些操作。

很多朋友采用如下的两种方法:

  1. 直接在页面的Script段中书写要执行的脚本。
  2. 在页面的onload JavaScript事件处理方法中书写。

这些都是不正确的方式,会有错误发生,原因很简单:Atlas的客户端实现也是一段JavaScript,需要先执行一次才可以工作,而上述两种方法的语句都是在Atlas客户端实现被初始化前运行的,自然会导致错误。

Atlas充分意识到了这个需求,提供了Framework内部的OnLoad事件,该事件将在Atlas Framework初始化以后被引发。想捕获这个事件,您需要在页面的Atlas XML Script中声明:

None.gif < page  xmlns:script ="http://schemas.microsoft.com/xml-script/2005" >
None.gif  
< components >
None.gif    
< application  id ="application"  load ="OnApplicationLoad"   />
None.gif  
</ components >
None.gif
</ page >

其中application 作为当前运行的Atlas 程序的引用,提供了一个load 事件,这样我们通过指定它的事件处理函数,即可在Atlas Framework 初始化之后执行我们的代码。

下面来看一个例子,Web Service如下,还是简单的两个数相加:

None.gif [WebMethod]
None.gif
public   int  AddInt( int  int1,  int  int2)
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
return int1 + int2;
ExpandedBlockEnd.gif}

然后ASPX 页面中添加ScriptManager 并对上述Web Service 进行引用:
None.gif < atlas:ScriptManager  ID ="scriptManager"  runat ="server"  EnableScriptComponents ="true" >
None.gif    
< Services >
None.gif        
< atlas:ServiceReference  Path ="SimpleWebService.asmx"   />
None.gif    
</ Services >
None.gif
</ atlas:ScriptManager >

页面上再添加两个input 用来提供两个加数:
None.gif < input  id ="value1"  type ="text"  value ="1"   />
None.gif
< input  id ="value2"  type ="text"  value ="2"   />

加上捕获Atlas Framework load 事件的XML Script 定义:
None.gif < script  type ="text/xml-script" >
None.gif    
< page  xmlns:script ="http://schemas.microsoft.com/xml-script/2005" >
None.gif      
< components >
None.gif        
< application  id ="application"  load ="OnApplicationLoad"   />
None.gif      
</ components >
None.gif    
</ page >
None.gif
</ script >

下面是事件处理函数以及相应的Callback ,可以看到我们应用了三种Atlas Framework 提供的扩展:
  1. $()方法,等同于document.getElementById()
  2. Sys.UI.TextBox类,封装了HTML的input元素
  3. 对Web Service调用的Mashup
None.gif function  OnApplicationLoad() 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    
var value1 = new Sys.UI.TextBox($('value1'));
InBlock.gif    
var value2 = new Sys.UI.TextBox($('value2'));
InBlock.gif    Dflying.SimpleWebService.AddInt(
InBlock.gif        value1.get_text(),
InBlock.gif        value2.get_text(),
InBlock.gif        OnComplete
InBlock.gif    );
InBlock.gif    
return false;
ExpandedBlockEnd.gif}

None.gif
None.gif
function  OnComplete(result) 
ExpandedBlockStart.gifContractedBlock.gif
dot.gif {
InBlock.gif    alert(result);
ExpandedBlockEnd.gif}

运行结果,没有任何问题:
applicationloadevent.JPG

本实例的源代码可以在此下载:http://files.cnblogs.com/dflying/ApplicationLoadEventDemo.zip

转载于:https://www.cnblogs.com/dflying/archive/2006/05/29/Atlas_and_Web_Service__Calling_Web_Service_during_Page_Load.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值