我有一个名为" 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]并强制我的数据吗?
答案 0 :(得分:1)
你的问题现在可能已经解决了,但是我将在未来可能会遇到这个问题的人发布我的调查结果。
This answer建议使用$httpParamSerializerJQLike
param序列化程序。对我来说,这是我的C#后端能够理解参数是一个复杂对象数组的唯一方法。
因此,在这种特定情况下,你必须这样做:
$http.get("MYURL", {params: {refNumbers: referenceNumbers}, paramSerializer: '$httpParamSerializerJQLike'});