web-dev-qa-db-ja.com

FromBodyは文字列パラメーターをバインドしていません

ASP.NET MVC 4 RC Web APIパラメーターバインディングの問題 に似た問題がありますが、[FromBody]属性を使用して解決しようとしています。

Fiddlerは次のリクエストを報告します(User Agent Stringのような無関係なビットを除く)

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1
Host: localhost:82
Connection: keep-alive
Content-Length: 11
Origin: http://localhost:3000
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01

query=Apple

私のコントローラーのアクションは

[HttpPut]
public ShoppingListItemWebModel CreateShoppingListItem([FromBody]string query) {
    // query is null
}

パラメーターを複雑な型にラップすることもできますが、それは問題を修正するためのハックのようです。または、クエリをURIに入れることもできますが、それは残りのAPIのパターンに適合しません。このようにすることは可能ですか?もしそうなら、私の間違いはどこですか?

42

リクエストを変更する

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1
Host: localhost:82
Connection: keep-alive
Content-Length: 11
Origin: http://localhost:3000
Content-Type: application/x-www-form-urlencoded
Accept: application/json, text/javascript, */*; q=0.01

=Apple

「クエリ」の欠如に注意してください

45
Filip W

Jgの代わりにAngularJSを使用している場合、AngularJSはコンテンツタイプapplication/jsonデフォルトでは。

PUT http://localhost:82/api/account/shoppinglistitems HTTP/1.1
Host: localhost:82
Connection: keep-alive
Content-Length: 7
Origin: http://localhost:3000
Content-Type: application/json
Accept: application/json, text/javascript, */*; q=0.01

'Apple'

値が文字列引用符で囲まれていることに注意してください(シングルまたはダブル)。

23
tsemer