4

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

这是我的 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 }
    });

但是“客户”对象总是返回为空。我也试过JSON.stringify(Clients)了,结果是一样的。谁能看到我在这里遗漏的任何明显的东西?

4

1 回答 1

4

Web API 中的操作参数绑定与 ASP.NET MVC 中的不同(您可以在本文中了解更多信息):

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

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

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

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

    }
}
于 2012-10-26T21:33:49.090 回答