如何将对象数组传递给$ http.get params

时间:2015-07-27 16:33:26

标签: c# angularjs

我有一个名为" ReferenceNumber"的对象。参考编号有一个"数字"和"类型"。

javascript对象如下所示:

{
    "type" : ""
    "number" : ""
}

我需要将这些" ReferenceNumber"的列表发送到C#System.Web.Http.ApiController。我的方法如下:

[HttpGet]
[Route(@"")]
public HttpResponseMessage MyMethod([FromUri]List<ReferenceNumber> refNumbers)
{ 
    ... 
}

我使用Angularjs的$ http尝试进行所有API调用。我更喜欢能够做到这样的事情:

$http.get("MYURL", obj);

但是如果需要,我愿意使用jQuery.param或JSON.stringify。或者:

$http.get("MYURL", {params: {refNumbers: referenceNumbers}});

或者其他什么。但无论我尝试这些东西的组合,包括硬编码,我似乎无法将列表发送出去。我可以获得一个空列表,一个空列表,或者包含其中包含Number和Type属性为null的项的列表,但是我无法获取我的数据。

如何正确发送此数据?发送一个列表根本没有完成?如果是这样,为什么列表不可接受?我应该将我的列表打包在一个对象中吗?我必须使用[FromBody]而不是[FromUri]并强制我的数据吗?

1 个答案:

答案 0 :(得分:1)

你的问题现在可能已经解决了,但是我将在未来可能会遇到这个问题的人发布我的调查结果。

This answer建议使用$httpParamSerializerJQLike param序列化程序。对我来说,这是我的C#后端能够理解参数是一个复杂对象数组的唯一方法。

因此,在这种特定情况下,你必须这样做:

$http.get("MYURL", {params: {refNumbers: referenceNumbers}, paramSerializer: '$httpParamSerializerJQLike'});