问题将 Javascript 数组发送到带有 List<T> 参数的 Web API 方法

Problems send Javascript Array to Web API method with List<T> parameter

本文关键字:方法 API Web 参数 List 数组 Javascript 问题      更新时间:2023-09-26

我正在使用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等,但不起作用。

不能在控制器方法上发布到两个参数。标准媒体类型格式化程序将格式化为单个对象

您的选择是

创建一个类,例如

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

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

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

那么 api 方法将如下所示

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