我确信我已经在另一个解决方案中做到了这一点,但我似乎无法再找到任何解决方案,并且想知道是否有人可以帮助我......
这是我的WebAPI代码:
public class WebController : ApiController
{
public void Get(string telephone, string postcode, List<Client> clients)
{
}
}
并且,从jQuery调用它:
function Client(name, age) {
this.Name = name;
this.Age = age;
}
var Clients = [];
Clients.push(new Client("Chris", 27));
$.ajax({
url: "/api/Web/",
data: { telephone: "999", postcode: "xxx xxx", clients: Clients }
});
但是“clients”对象总是返回null。我也试过了JSON.stringify(Clients)
,这也是同样的结果。任何人都能看到我在这里失踪的明显事物吗?
答案 0 :(得分:4)
Web API中的操作参数绑定与ASP.NET MVC中的操作参数绑定不同(您可以阅读有关它的更多信息in this article):
如果您不想遵循这些约定,则需要使用[FromBody]
或[FromUri]
属性标记参数,具体取决于您希望绑定它们的位置。
在您的情况下,因为您使用的是GET请求,您需要将clients
param标记为[FromUri]
才能正确绑定:
public class WebController : ApiController
{
public void Get(string telephone,
string postcode,
[FromUri]List<Client> clients)
{
}
}