当使用手动构造的 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();
}
最佳答案
在我的实例中,这被证明是 jquery ajax 调用中的错误数据包 数据包应该是一个键值对的对象,对于网络方法,每个参数一个键。
如果你的方法有多个参数,这可能是显而易见的,但如果你不这样做,很容易假设你可以只传递参数内容:
这个:
data: JSON.stringify(MyParam),
应该是这样的:
data: JSON.stringify({ParamName:MyParam}),
如果你知道就很明显 - 如果你不知道就挠头!
参见 my blog post了解更多信息
关于javascript - 类型 System.Collections.Generic.IDictionary 不支持反序列化数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853851/