现在的位置: 首页 > 综合 > 正文

关于RC版WebAPI参数绑定问题

2011年04月06日 ⁄ 综合 ⁄ 共 645字 ⁄ 字号 评论关闭

近日将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,否则会在运行时抛出异常

抱歉!评论已关闭.