问题使用List <t>参数</t>将Javascript Array发送到Web API方法

时间:2013-11-12 15:19:45

标签: c# javascript angularjs

我正在使用AngularJS $ http将数据发送到我的Web API服务器。 我不知道为什么,但是我的JS数组不会进入服务器端,它会变为NULL,id正常。

这就是我所拥有的:

客户端:

var dataArray = [
     {
        Prop1: "4674279"
     }
];

var id = 1;

$http({
    method : 'POST',
    url : 'http://localhost/Services/Controller/Method',
    auth : true,
    data: {
        'id' : id,
        'items' : dataArray 
    },
    headers: {
           "Content-Type": "application/json"
    }})
    .success(function (data, status, headers, config) {
         if (status === 200) {
              return data;
         }
     })
     .error(function (data, status, headers, config) {
           console.log('[ERROR] Status Code:' + status);
    });

服务器端:

public partial class Item
{
     public string Prop1 { get; set; }
}

public ReturnType Method(int id, List<Item> items)
{

}

我做错了什么? 我已经尝试过JSON.stringify等等,但不会工作。

1 个答案:

答案 0 :(得分:3)

您无法在控制器方法上发布两个参数。标准mediatype格式化程序将格式化为单个对象

您的选择是

创建一个类,例如

public class ListItems {
  public int id {get;set;}
  public List<Items> Items {get;set;}
}

或者将id作为网址的一部分,例如

http://localhost/Services/Controller/Method/:id

然后api方法看起来像

public ReturnType Method(int id, [FromBody]List<Item> items)