关于RC版WebAPI参数绑定问题


近日将asp.net webapi 升级为rc版,突然发现之前beta版开发的程序不能正常工作了,用httpclient调用webapi时,action的参数总是空,无法获取传入的值,查阅了官方的论坛发现下面的帖子,http://blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

 

rc版的webapi参数绑定器分为两种:

1.Model Binding

2.Formatters 

其中Model Binding仅从url中取值,这点是与mvc的model binding有区别的,

formatters是从request的body中取值,并且是把整个body作为一个(不可为多个)对象解析为一个参数。

 

webapi是如何从这两种方式选择呢?

1.默认情况下是根据参数的类型,如果参数为简单类型(字符串、整数、浮点、时间类型等),则使用model binding,如果是复杂类型(自定义的类,包括一个或多个字段)等,则用formatters

2.可以给参数加上[FromBody]属性,则使用formatters

3.可以给参数加上[ModelBinder]属性,则使用model binding,而且可以此属性允许你指定用自定义的绑定器,也可以使用[FromUri]属性来使用model binding

4.特别注意一点,一个action上,只能有一个参数使用formatters,否则会在运行时抛出异常


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM