传递从jQuery到服务的列表

时间:2012-10-26 21:24:49

标签: c# .net asp.net-web-api

我确信我已经在另一个解决方案中做到了这一点,但我似乎无法再找到任何解决方案,并且想知道是否有人可以帮助我......

这是我的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),这也是同样的结果。任何人都能看到我在这里失踪的明显事物吗?

1 个答案:

答案 0 :(得分:4)

Web API中的操作参数绑定与ASP.NET MVC中的操作参数绑定不同(您可以阅读有关它的更多信息in this article):

  • “简单”类型(字符串,整数等)从URI
  • 绑定
  • “复杂”类型与请求正文绑定

如果您不想遵循这些约定,则需要使用[FromBody][FromUri]属性标记参数,具体取决于您希望绑定它们的位置。

在您的情况下,因为您使用的是GET请求,您需要将clients param标记为[FromUri]才能正确绑定:

public class WebController : ApiController
{
    public void Get(string telephone, 
                    string postcode, 
                    [FromUri]List<Client> clients)
    {

    }
}