【问题标题】:Type System.Collections.Generic.IDictionary is not supported for deserialization of an array数组的反序列化不支持类型 System.Collections.Generic.IDictionary
【发布时间】:2013-05-31 09:16:24
【问题描述】:

使用手动构造的 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();
}

【问题讨论】:

    标签: javascript jquery .net ajax pagemethods


    【解决方案1】:

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

    如果你的方法有多个参数,这可能很明显,但如果你没有,很容易假设你可以只传递参数内容:

    这个:

    data: JSON.stringify(MyParam), 
    

    应该是这样的:

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

    如果你知道就很明显 - 如果你不知道就挠头!

    更多信息请见my blog post

    【讨论】:

      猜你喜欢
      • 2019-10-07
      • 2014-10-28
      • 2014-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多