我收到「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] '「}
我需要做些什麼才能做到這一點?
你可以張貼`PageMethods.AddContact`的實施?我認爲如果我們確切地知道幕後發生了什麼,幫助你會更容易。 – 2011-02-15 19:58:29
爲什麼不將WebMethod參數聲明爲ContactHolder []?看起來好像ASP.Net看到一個標量參數(Object),並將JSON字符串轉換爲.Net字符串。 – devio 2011-02-15 19:58:39