關於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