FromBody不能绑定string参数
我有一个问题类似于ASP.NET MVC 4 RC Web API参数绑定问题 ,但我试图通过使用[FromBody]属性来解决它。
提琴手报告下面的请求(不包括像用户代理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 }
我可以将这个参数包装成一个复杂的types,但是这似乎是一个解决问题的方法。 或者我可以把查询放在URI中,但是这不符合API其余部分的模式。 可以这样做吗? 如果是这样,我的错误在哪里?
改变你的要求
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
注意缺less“查询”
如果您使用的是AngularJS而不是jQuery,则可能需要select以下替代方法,因为AngularJS默认使用内容typesapplication/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'
请注意,该值被包装在string引号(单或双)中。