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

时间:2014-09-29 21:17:58

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

      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);
               }
         });
 }

背后的代码

[WebMethod]
    public static void ShowResults(//Here how receive list object from javascript)
    {
           //convert parameter to List<UsersInfo>
    }

    public partial class UsersInfo
    {
        public string UserName { get; set; }
        public string Email { get; set; }        
        public string Status { get; set; }
    }

2 个答案:

答案 0 :(得分:0)

尝试替换此行

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

答案 1 :(得分:0)

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

您的UsersInfo类似乎是一个简单的POCO,因此应该在没有任何自定义绑定逻辑的情况下进行绑定:

[WebMethod]
public static void ShowResults(List<UsersInfo> UsersInfo)
{
       //No need to convert
}