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 }
    });

しかし、「clients」オブジェクトは常に null として返されます。も試しましたJSON.stringify(Clients)が、これは同じ結果です。ここで私が見逃している明らかなものを誰かが見ることができますか?

4

1 に答える 1

4

Web API でのアクション パラメーターのバインドは、ASP.NET MVC とは異なります (詳細については、この記事を参照してください)。

  • 「単純な」型 (string、int など) は URI からバインドされます
  • 「複雑な」タイプはリクエストボディからバインドされます

規則に従いたくない場合は、パラメーターをバインドする場所に応じて、[FromBody]または属性でパラメーターをマークする必要があります。[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 に答える