2011-02-15 42 views
2

我收到「System.Collections.Generic.List'1 [... + ContactHolder]'類型的System.String類型的對象無法轉換錯誤' 「使用jQuery將JSON對象發送到asp.net WebMethod時出錯

這是我的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中時,它看起來像這樣:」[{\名稱\ 「:\」 本\ 「\ 」地址\「:\ 」俄亥俄\「},{\ 」名稱\「:\ 」喬恩\「,\ 」地址\「:\ 」伊利諾伊州\「}]」

調用JavaScriptSerializer()的代碼錯誤。ConvertToType,消息是{「無法將類型System.String的對象轉換爲類型'System.Collections.Generic.List'1 [... + ContactHolder] '「}

我需要做些什麼才能做到這一點?

+0

你可以張貼`PageMethods.AddContact`的實施?我認爲如果我們確切地知道幕後發生了什麼,幫助你會更容易。 – 2011-02-15 19:58:29

+0

爲什麼不將WebMethod參數聲明爲ContactHolder []?看起來好像ASP.Net看到一個標量參數(Object),並將JSON字符串轉換爲.Net字符串。 – devio 2011-02-15 19:58:39

回答

相關問題