在实际处理业务过程中,会发现往往页面要传递给webservice 的并非一个或多个字符串,有时需要传递的是一个组合数据,如这样的一组数据:
客户端将这样的Json字符串作为$.ajax方法的data参数是没有问题的,然而,服务端的webservice该如何去写接收参数却成为了一个问题。
其实Employee对象首先是一个数组,其次数组的每一项都是一个Dictionary<string,string>字典类型。
于是,尝试在服务端使用Dictionary<string,string>[] Employee来接收客户端传递的参数,结果竟然成功了。
一,客户端代码
二,服务端代码
/// <summary>
///
/// </summary>
/// <param name="students"></param>
/// <returns></returns>
[WebMethod]
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
public string ImportStu(Dictionary<string,string> []students)
{
if (students.Length == 0)
{
return "没有任何数据!";
}
else
{
try
{
foreach (Dictionary<string, string> stu in students)
{
//构造一个新的Student对象。
Student student = new Student();
//为新构造的Student对象属性赋值。
foreach (string key in stu.Keys)
{
switch (key)
{
case "name":
student.Name = stu[key];
break;
case "sex":
student.Sex = stu[key];
break;
case "age":
int age;
if (Int32.TryParse(stu[key], out age))
{
student.Age = age;
}
else
{
student.Age = 0;
}
break;
default:
break;
}
}
}
return "导入学生成功!";
}
catch
{
throw new Exception("导入学生失败!");
}
}
}
注意事项:
服务端参数名需要和客户端Json数组的key值相同,如上代码中,参数名都为students。