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

ASP.NET
使用函数传递参数来执行相应的数据库操作
如何实现在窗体和窗体之间进行传递数据
ASP.NET中文显示之两种解决方法
ASP.NET、JSP及PHP之间的抉择
ASP.NET 2.0发送电子邮件中存在的问题
谈谈HtmlControl与WebControl的区别与用途
从ASP.NET 1.1升级到ASP.NET 2.0要考虑的Cookie问题
通过系统配置来提高ASP.NET应用程序的稳定性
妙用ASP2.0中的URL映射改变网址
AJAX实现web页面中级联菜单的设计
ASP.NET跨页面传值技巧总结
再议ASP.NET DataGrid控件中的“添加新行”功能
Geometry 对象浅析
重构CollapsibleSplitter
如何利用.NET Framework使用RSS feed
ASP.NET获取IP与MAC地址的方法
在ASP.NET 2.0中使用样式、主题和皮肤
ASP.NET中为GridView添加删除提示框
ASP.NET 2.0,无刷新页面新境界
看看一个.net版对话框控件

在ASP.NET Atlas中调用Web Service


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-08-14   浏览: 70 ::
收藏到网摘: 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;
  }