Problema con el envío de datos json a ASP.NET WebMethod

He leído todas las preguntas relacionadas con este problema pero no pude resolverlo …

La clase de puntuación:

public class Score { // default constructor public Score() { } public int TraitID { get; set; } public double TraitScore { get; set; } } 

El método web ASPX:

  [WebMethod] public static bool Test(List scores) { return true; } 

El código jQuery:

  var scoresList = [{"TraitID":1,"TraitScore":2}, {"TraitID":2,"TraitScore":5}]; $.ajax({ type: "POST", url: "Tryouts.aspx/Test", data: "{'scores':" + JSON.stringify(scoresList) + "}", contentType: "application/json; charset=utf-8", dataType: "json", success: function (response) { if (response.d == true) { alert("success!!!!!"); } else { alert("problem!!!!!!!!!"); } }, error: function () { alert("ERROR"); } }); 

Sigo recibiendo el error:

 {"Message":"Cannot convert object of type \u0027System.String\u0027 to type \u0027System.Collections.Generic.List`1[BusinessLogicLayer.Score]\u0027","StackTrace":" at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeInternal(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Serialization.ObjectConverter.ConvertObjectToTypeMain(Object o, Type type, JavaScriptSerializer serializer, Boolean throwOnError, Object& convertedObject)\r\n at System.Web.Script.Services.WebServiceMethodData.StrongTypeParameters(IDictionary`2 rawParams)\r\n at System.Web.Script.Services.WebServiceMethodData.CallMethodFromRawParams(Object target, IDictionary`2 parameters)\r\n at System.Web.Script.Services.RestHandler.InvokeMethod(HttpContext context, WebServiceMethodData methodData, IDictionary`2 rawParams)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.InvalidOperationException"} 

Gracias !!!

Estoy pasando matrices de objetos personalizados a la Lista en métodos web y funciona bien.

Supongo que está teniendo un pequeño problema de formato JSON debido a las citas en torno a los nombres de las propiedades. Intenta cambiar tu objeto a esto:

 var scoresList = [{TraitID:1, TraitScore:2}, {TraitID:2, TraitScore:5}]; 

y cambia tu línea de datos a esto:

 data: JSON.stringify({ scores : scoresList }), 

Espero que ayude…

ACTUALIZACIÓN: ejemplo de trabajo …

  

Aquí está el código:

 public class Score { // default constructor public Score() { } public int TraitID { get; set; } public double TraitScore { get; set; } } [WebMethod] public static bool Test( List scores ) { return true; }