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

ASP.NET
二级域名Cookie问题的解决方法
如何为asp.net网站项目添加子项目
asp.net用url重写URLReWriter实现任意二级域名
asp.net 序列化and反序列化演示
asp.net Timer的使用方法
AjaxControlToolKit DropDownExtender(下拉扩展控件)使用方法
AjaxControlToolKit CalendarExtender(日历扩展控件)的使用方法
让GridView只显示特定用户的数据的方法
让GridView只更新某些特定的数据的方法
ajaxControlToolkit中CascadingDropDown的用法说明
axp.net ScriptManager的简单用法
把程序集安装到全局程序集缓存中的步骤
引用全局程序集缓存内的程序集的方法
asp.net COOKIES需要注意的一点
asp.net UrlReWriter使用经验小结
页面导出为Excel的时间格式的问题
asp.net cookie清除的代码
Asp.net XMLHTTP封装类(GET,Post发送和接收数据)
ASP.NET XmlHttp跨域访问实现代码
Asp.NET 随机码生成基类(随机字母,随机数字,随机字母+数字)

在ASP.NET Atlas中调用Web Service


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