数组的反序列化不支持类型System.Collections.Generic.IDictionary

时间:2013-05-31 09:16:24

标签: javascript jquery .net ajax pagemethods

使用手动构造的JQuery.ajax调用调用页面方法时,可能会发生此错误。

反序列化由.NET完成,而不是在用户代码中完成。

的javascript:

MyParam = []; 
... 
$.ajax({ type: 'POST', 
         url: 'PageOrService.as?x/DoSomething',
         data: JSON.stringify(MyParam), 
         contentType: "application/json; charset=utf-8", 
         dataType: "json", 
         complete: function (a, b, c, d) { console.log(a, b, c, d); } 
       });

C#

[WebMethod()] 
public static void DoSomething(object ParamName) 
{ 
  ParamName.ToString();
}

1 个答案:

答案 0 :(得分:5)

在我的实例中,这在jquery ajax调用中被证明是一个错误的数据包 数据包应该是键值对的对象,Web方法的每个参数都有一个键。

如果您的方法有多个参数,这可能很明显,但如果不这样做,很容易假设您只需传递参数内容:

这样:

data: JSON.stringify(MyParam), 

应该是这样的:

data: JSON.stringify({ParamName:MyParam}),

如果你知道的话很明显 - 如果你不知道的话,请抓头!

有关详细信息,请参阅my blog post