怎样通过JavaScript向WebService传递C#对象集合,如List解决思路

怎样通过JavaScript向WebService传递C#对象集合,如List<MyClass>?
怎样通过JavaScript向WebService传递C#对象?

比如我有一个简单的自定义类:
C# code

public class MyClass
{
    public MyClass()
    {
        //
        //TODO: 在此处添加构造函数逻辑
        //
    }
    private string name;

    public string Name
    {
        get { return name; }
        set { name = value; }
    }
    private int age;

    public int Age
    {
        get { return age; }
        set { age = value; }
    }
}



一个WebService,进行简单处理:
C# code

[System.Web.Script.Services.ScriptService]
public class MyWebService : System.Web.Services.WebService {

    public MyWebService () {

        //如果使用设计的组件,请取消注释以下行 
        //InitializeComponent(); 
    }

    [WebMethod]
    public MyClass GetClass(MyClass cls) {
        cls.Name = cls.Name + " processed.";
        cls.Age = cls.Age++;

        return cls;
    }
    
}



HTML code

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title>无标题页</title>
<script language="javascript" type="text/javascript">
// <!CDATA[

function ButtonCallWebService_onclick() {
    var cls = new MyClass();
    
    cls.Name = $get('TextName').value;
    cls.Age = $get('TextAge').value;
 
    MyWebService.GetClass(cls, OnSuccess);
}
function OnSuccess(cls)
{
    alert(cls.Name + "," + cls.Age);
}

// ]]>
</script>
</head>
<body>
    <form id="form1" runat="server">
    <asp:ScriptManager ID="ScriptManager1" runat="server">
        <Services>
            <asp:ServiceReference Path="~/MyWebService.asmx" />
        </Services>
    </asp:ScriptManager>
    <div>
        name:<input id="TextName" type="text" /><br />
        age: <input id="TextAge" type="text" /><br />
        <input id="ButtonCallWebService" type="button" value="Call" onclick="return ButtonCallWebService_onclick()" />
    </div>
    </form>
</body>
</html>




这是没问题的,那么怎样传递MyClass的集合呢?也就是说在WebService端可以以List<MyClass>方式接收,其实我主要是想利用LINQ在服务器端对这个集合进行查询,然后得出结论后再返回给客户端,当然返回string类型也可以。只不过我不知道该怎么进行自定义类型的数组类型的传递,请教。

------解决方案--------------------
function MyClass()
  {
  this.name = "";
  this.age = -1;
  }
   
   
  function SendData()
  {
  var ma = [];
  for(var n = 0;n < 10; ++n)
  {
  var m = new MyClass();
  m.age = n;
  m.name = "name" + n;
  ma[n] = m;
  }  
  MyWebService.GetClassListFunc(ma, GetDataCallback);
  }
------解决方案--------------------
function Button_onclick() {
  var clsArray = new Array();
   
  for(var i = 0; i < 10; i++)
  {
  var cls = new MyClass();
  cls.Name = "name" + i;
  cls.Age = 5 + i;
  clsArray[i] = cls;
  }
   
   
  MyWebService.GetClass(clsArray, OnSuccess);
}
function OnSuccess(clsArray)
{
  var s = "";
   
  for(var i = 0; i < clsArray.length; i++)
  {
  s += clsArray[i].Name + ", " + clsArray[i].Age + "\n";
  }
  alert(s);
}

[WebMethod]
public MyClass[] GetClass2(MyClass[] cls)
{
  var result = from c in cls
  where c.Age > 10
  select c;

  return result.ToArray();
}
------解决方案--------------------