可同時參見這篇文章 Jquery下Json數據的傳遞與解析(asp.net mvc與asp.net api下后台json接收方式的不同)
早先使用webapi ,希望通過使用jquery下的ajax方式post json格式數據到后台並接收處理返回json數據。但發現后台無法像之前在mvc下形如以下這種方式:
public IList<Site> SiteList(int startId, int itemcount)
接收前台傳來的json數據。后嘗試后台定義一個與前台傳遞的json數據類型對應的類發現能接收前台json數據,一直不明原因。
后發現以下這篇文章有同樣的疑問。
ASP.NET WebAPI RC 竟然不支持最常用的json傳參
文章本身沒指出具體原因所在,下面評論的朋友給出了啟示,在webapi下json的傳遞方式已不同於之前的mvc了,介紹如下:
另一位朋友給出的鏈接指出了webapi下傳值方式不同設計的原因:
在傳遞簡單類型數據之前,考慮下是否把值包裹在一個復雜類型之中。這將使得你能夠得到服務器端的模型驗證,並能夠根據需要今后輕松的拓展你的模型。
關於復雜類型和簡單類型是怎么賦值的:
默認情況下,webapi嘗試着從request url里獲取簡單類型數據,當然也可通過添加FromBody屬性告知webapi從request body中讀取你所需的數據。
webapi只讀取response body一次,因此僅能從request body傳遞一個參數。如果你需要從request body里獲取復雜類型值,可以在后台定義一個復雜類型對應傳遞的復雜類型的json數據來接收。
詳細如下:
http://www.asp.net/web-api/overview/working-with-http/sending-html-form-data,-part-1
rc版的webapi參數綁定器分為兩種:
1.Model Binding