【发布时间】:2017-01-17 02:03:49
【问题描述】:
我有一个名为“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}});
或其他。但是无论我尝试将这些东西组合在一起,包括硬编码,我似乎都无法将列表发送过来。我可以获取一个空列表、一个空列表或其中包含数字和类型属性为空的项目的列表,但我无法获取我的数据。
如何正确发送这些数据?发送列表根本就没有完成吗?如果是这样,为什么不能接受列表?我应该将我的列表打包在一个对象中吗?我必须使用 [FromBody] 而不是 [FromUri] 并将我的数据强制输入其中吗?
【问题讨论】:
-
我知道 Angular,但不知道 ASP。您的 ASP 服务期望什么作为查询字符串?即,如果您必须手动输入 URL 以使用 2 个参考编号调用此服务,您会输入什么?
-
请原谅,我可能有错误的标签。它是一个 System.Web.Http ApiController。我会尝试修复标签。
-
“referenceNumbers”是 ReferenceNumber 对象的列表,而不是单个对象。列表中的每个对象都有一个名称和类型属性。
-
尝试简单地做:
{params: referenceNumbers}.... 那么 url 将是?number=123&type=sometype -
请看上面的评论。我需要这些对象的列表,而不仅仅是单个对象。