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

标签 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();
}

最佳答案

在我的实例中,这被证明是 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/

相关文章:

javascript - 使用 Node js将mysql结果解析为变量

javascript - 对于 Protractor 测试,我们可以在没有 browser.wait() 函数的情况下获取 waitElement 对象值吗?

PHP Ajax聊天: data one PC to another pc not sending/receiving

c# - 为什么我不能在 C# 中捕获通用异常?

.NET 签名 XML 前缀

javascript - 根据收到的值预先选择下拉选择选项

javascript - Jquery - 嵌套循环中的 $(this)

jquery - 如何使用带有 em 值的 jQuery ScrollTop 函数?

jquery - 检查 div 是否包含 jQuery 中的元素

c# - 隐藏我的网站是用 ASP.NET 构建的事实