在C#中将对象的Json列表发布到webmethod?

在C#中将对象的Json列表发布到webmethod?,c#,jquery,ajax,json,C#,Jquery,Ajax,Json,我试图将对象列表(或对象数组)发布到c#Webmethod。我了解如何在方法中作为参数接收并转换为对象的本地列表 for (var i = 0; i < usersInfo.length; i++) { user = { UserName : usersInfo[i].UserName, Email : usersInfo[i].Email, Status : status }

我试图将对象列表(或对象数组)发布到c#Webmethod。我了解如何在方法中作为参数接收并转换为对象的本地列表

for (var i = 0; i < usersInfo.length; i++) {
      user = {
               UserName : usersInfo[i].UserName,
               Email : usersInfo[i].Email,
               Status : status
      };

      users.push(user);
}
var results = "";
$('#lblError').val('');
if (users.length > 0) {
   $.ajax({
          type: 'POST',
          contentType: "application/json; charset=utf-8",
          url: 'UserValidation.aspx/ShowResults',
          data: "{'UsersInfo':'" + JSON.stringify(users) + "'}",
          async: false,
          success: function (data) {
          results = data.d;
          $('#lblError').val(results);

         },
        error: function (xhr, status, error) {
                 var exception = JSON.parse(xhr.responseText);
                 alert(exception.Message);
               }
         });
 }
for(var i=0;i0){
$.ajax({
键入:“POST”,
contentType:“应用程序/json;字符集=utf-8”,
url:'UserValidation.aspx/ShowResults',
数据:“{'UsersInfo':'”+JSON.stringify(users)+“}”,
async:false,
成功:功能(数据){
结果=数据d;
$('lblError').val(结果);
},
错误:函数(xhr、状态、错误){
var exception=JSON.parse(xhr.responseText);
警报(异常消息);
}
});
}
代码隐藏
[WebMethod]
publicstaticvoidshowresults(//这里是如何从javascript接收列表对象)
{
//将参数转换为列表
}
公共部分类UsersInfo
{
公共字符串用户名{get;set;}
公共字符串电子邮件{get;set;}
公共字符串状态{get;set;}
}

尝试替换此行

data: JSON.stringify({ UsersInfo: users}),

詹姆斯,你是对的;您需要为ShowResults参数定义正确的类型,以便绑定能够工作并将传入的json绑定到您的UsersInfo类

您的UsersInfo类似乎是一个简单的POCO,因此应该绑定而不使用任何自定义绑定逻辑:

[WebMethod]
public static void ShowResults(List<UsersInfo> UsersInfo)
{
       //No need to convert
}
[WebMethod]
公共静态无效显示结果(列出用户信息)
{
//不需要转换
}

publicstaticvoidshowresults(…)中的参数是什么?
JSON.stringify
和双重序列化的用途是什么?
data:{UsersInfo:users}
还不够吗?我可以这样使用ShowResults(List UsersInfo)?@James123对不起,你的问题是关于前端的。。我没有足够的经验来回答你的“后端”问题。但是你应该能够从发布的表单中读取数据。@dot自由职业者,但我的建议也可以做到这一点。您的代码将对象转换为json字符串,然后该字符串将转换为另一个json字符串(第二个字符串由$.ajax自动完成)。因此,您的代码将发布
“{a\”:“test\”}
,而不是
{a\”:“test\”}
,这将需要在服务器端进行另一次不必要的反序列化。感谢L.B更新:我错过了json参数名称映射。
[WebMethod]
public static void ShowResults(List<UsersInfo> UsersInfo)
{
       //No need to convert
}