使用jQuery将JSON对象发送到asp.net WebMethod时出错

时间:2011-02-15 19:52:44

标签: .net jquery ajax

我收到错误“无法将System.String类型的对象转换为'System.Collections.Generic.List'1 [... + ContactHolder]'”

这是我的C#代码:

public class ContactHolder{
    public String Name { get; set; }
    public String Address { get; set; }
}

[WebMethod]
public static string AddContact(Object items){
    List<ContactHolder> contacts = new JavaScriptSerializer().ConvertToType<List<ContactHolder>>(items);
    return String.Format("You added {0} contacts!", contacts.ToString());
}

这是我的Javascript代码(注意我在项目中包含了jquery-1.4.1.js和json2.js)

function Test() {
var arr = new Array();
var contact = new Object();
contact.Name = "Ben";
contact.Address = "Ohio";

var contact2 = new Object();
contact.Name = "Jon";
contact.Address = "Illinois";

arr[1] = contact;
arr[2] = contact2;

var DTO = JSON.stringify(arr);
PageMethods.AddContact(DTO, OnMyMethodComplete);}

function OnMyMethodComplete(result, userContext, methodName) {alert(result);}

当我将DTO传递给myPageMethod时,它看起来像这样:“[{”Name“:”Ben“,”Address“:”Ohio“},{”Name“:”Jon“,”Address“:”Illinois“ }]“

当它出现在我的WebMethod项目中时,它看起来像这样:“[{\”Name \“:\”Ben \“,\”Address \“:\”Ohio \“},{\”Name \“ :\ “乔恩\”,\ “地址\”:\ “伊利诺斯\”}]“

调用JavaScriptSerializer()时的代码错误.ConvertToType,消息是{“无法将System.String类型的对象转换为''类型'System.Collections.Generic.List'1 [... + ContactHolder]' “}

我需要做些什么来完成这项工作?

1 个答案:

答案 0 :(得分:4)