当前位置: 首页 > 图文教程 > 网络编程 > ASP.NET > 在ASP.NET Atlas中调用Web Service

ASP.NET
C#教程:简化的初始化
C#教程:隐式类型的局部变量
ASP.NET 2.0教程:Bind标签和Eval标签
用C#语言获取CPU利用率
ASP.Net实例:直接在邮件中内联附件内嵌图片
ASP.NET教程:性能优化的方法
ASP.NET开发方式的四层架构的Web应用系统构造
BasicHTTP-唯一能直接与Java交互的方式
ASP.NET教程:截取字符串
如何用ASP.NET实现多附件上传?
.Net程序员必读:八个实用网站推荐
.NET环境下为网站增加IP过滤功能
在.Net框架类库中如何使用定时器类
Asp.net是可以帮你实现Urlrewrite的
.NET开发过程中易被忽视的问题
ASP.NET教程:多个Set排列算法
c# 分布式事务以及MSDTC
解决ASP.NET2.0网站中对路径访问被拒绝问题
ASP.NET通过WMI创建站点添加虚拟目录和主机头
VS 2008完美地支持JavaScript和ASP.NET AJAX

在ASP.NET Atlas中调用Web Service


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 136 ::
收藏到网摘: n/a

Atlas Framework中包含了对AJAX调用的封装,让您可以很方便的在客户端通过JavaScript调用服务器端方法。在本篇文章中,我将解释一下如何使用Atlas调用服务器端Web Service。

使用Atlas,我们只需要如下步骤即可调用服务器端Web Service:

在Web Service的方法上加上[WebMethod]属性。

在ASPX页面上的ScriptManager中添加对这个Web Service的引用。

只需以上两步,Atlas会在运行时为您生成相应的mash up,让您可在客户端JavaScript中通过WebServiceClassName.ServiceMethodName()调用该方法。

让我们先来看一个最简单的例子,调用服务器端Web Service得到两个数的和:

首先建立一个Web Service:SimpleWebService.asmx,并在其中添加一个Service Method,不要忘记标记为[WebMethod]哦: [WebMethod]
public int AddInt(int int1, int int2)
{
 return int1 + int2;
}
然后再ASPX页面上的ScriptManager中添加对该Web Service的引用:

上面的例子仅仅传递简单类型,然而在现实世界中,我们经常会需要传递一些复杂的类型,让我们看一个传递复杂类型的例子:

本例子同样是一个加法,不过这回操作的类型是复数。让我们先来看看C#中我们的复数的定义(作为示例,这里尽可能的简化)。注意我们应该提供自定义的复杂类型一个无参的构造函数,以便于Atlas自动在C#类型和JavaScript类型中转换: 

public class ComplexNumber
  {
   private int real;
  
   public int Real
   {
   get { return real; }
   set { real = value; }
   }
   private int imag;
  
   public int Imag
   {
   get { return imag; }
   set { imag = value; }
   }
   public ComplexNumber(int real, int imag)
   {
   this.real = real;
   this.imag = imag;
   }
   public ComplexNumber()
   {
   }
  }

然后是实现复数加法的Web Method,写在同一个Web Service中:  

[WebMethod]
  public ComplexNumber AddComplexNumber(ComplexNumber num1, ComplexNumber num2)
  {
   return new ComplexNumber(num1.Real + num2.Real, num1.Imag + num2.Imag);
  }

相应的ASPX页面中也要添加一些HTML,让用户输入两个复数:

Pass complex type to web service - add the two complex numbers: 
  

  然后是相应的JavaScript,当用户点击上面的按钮时,执行这段JavaScript以调用Web Method。
  function btnAddComplex_onclick() {
   var cplx1 = {Real: $('cplx1r').value, Imag: $('cplx1i').value};
   var cplx2 = {Real: $('cplx2r').value, Imag: $('cplx2i').value};
   SimpleWebService.AddComplexNumber(cplx1, cplx2, onAddComplextNumberComplete);
  }
  function onAddComplextNumberComplete(result) {
   $('btnAddComplex').value = result.Real.toString() + ' + ' + result.Imag.toString() + 'i';  }

添加点HTML Code,让用户输入两个整数: Pass simple type to web service - add the two integers: 

再书写一点JavaScript,当用户点击上面的按钮时,调用Web Method。这里要注意的是JavaScript中调用Web Method的格式:前面两个参数int1,int2分别对应着Web Service声明中的两个参数,后面一个参数onAddIntComplete表示方法成功返回时的Callback方法,也就是所谓AJAX中的A。同时需要注意的是$()方法,等同于document.getElementById()。

function btnAddInt_onclick() {
   var int1 = $('int1').value;
   var int2 = $('int2').value;
   SimpleWebService.AddInt(int1, int2, onAddIntComplete);
  }
  function onAddIntComplete(result) {
   $('btnAddInt').value = result;
  }