除了传递和返回简单的类型,如字符串和整数型给web 服务,你也可以传递和返回复杂类型例如你的Web服务类。
下面是asmx的代码:
下面是asmx的代码:
<%@ WebService Language="C#" Class="Quickstart.Samples.ComplexService" %> using System; using System.Web; using System.Collections; using System.Web.Services; using System.Web.Services.Protocols; using Quickstart.Samples;//注意这里要using namespace Quickstart.Samples { public class Animal { String _name; String _color; public String Name { get { return _name; } set { _name = value; } } public String Color { get { return _color; } set { _color = value; } } }; [WebService(Namespace = "http://tempuri.org/")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] public class ComplexService : System.Web.Services.WebService { [WebMethod] public Animal EchoAnimal(Animal a) { return a;//这里传递和返回的都是个Animal对象 } } }
下面是aspx页面的代码:<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>Complex Type Service</title> <atlas:Script ID="Script1" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Mozilla" /> <atlas:Script ID="Script2" runat="server" Path="~/ScriptLibrary/AtlasCompat.js" Browser="Firefox" /> <atlas:Script ID="Script3" runat="server" Path="~/ScriptLibrary/Atlas.js"/> <!-- get script proxy --> <script type="text/javascript" language="JavaScript" src="ComplexService.asmx/js"> </script> </head> <body> <h3> Name:<input id="inputName" /> Color:<input id="inputColor" /> <button id="buttonGo" onclick="return OnbuttonGo_click()">GO</button> </h3> <script type="text/javascript" language="JavaScript"> function OnbuttonGo_click() { //Call script proxy passing the input element data var i1 = document.getElementById('inputName'); var i2 = document.getElementById('inputColor'); //先new一个web 服务中的Animal对象 var object = new Quickstart.Samples.Animal();
//给这个对象的属性赋值 object.Name = i1.value; object.Color = i2.value. //传递的是一个Animal对象 requestComplexService = Quickstart.Samples.ComplexService.EchoAnimal( object, //params OnComplete, //Complete event OnTimeout //Timeout event ); return false; } function OnComplete(result) {
//你可以直接在js里获得他的属性
alert("Name= " + result.Name + " Color= " + result.Color); } function OnTimeout(result) { alert("Timed out"); } </script> </body> </html>